gpt4 book ai didi

ruby-on-rails - 解决类和 gem 之间的命名空间冲突

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:49 26 4
gpt4 key购买 nike

在我的 Rails 2.3 应用程序中,我发现问题源于现有 ActiveRecord 模型和我最近添加的 gem 之间的命名空间冲突。

具体来说,我试图向应用程序添加 jammit 支持。 jammit 的依赖 gem 之一需要 'platform',它将 Platform module 引入到应用程序的命名空间中。但是,我已经有一个同名的 AR class,重命名它会带来很多额外的工作和可能的错误。

我想知道是否有一种相对简单的方法(使用 ruby​​ 的 metamagic 或诸如此类)来防止这种 namespace 冲突,而不必重命名我的类或更改实际的 gem。谢谢。

编辑:

不是在整个应用程序中重命名/包装 Platform,因为module Platform 只是另一个 gem 需要,我导致 fork 两个 gem,将 Platform 重命名为 XPlatform(对于原始 gem 和导入它的 gem),然后重建它们。这似乎奏效了[叹气]。

最佳答案

如果不能更改名称时无法避免的情况

尝试将您的 activerecord 类包装在一个模块中

module YourModule
class Platform < Activerecord::Base
named_scope :your_scope, lambda {#your code here}

end
end

所以你唯一要做的改变就是

YourModule::Platform.your_scope

关于ruby-on-rails - 解决类和 gem 之间的命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12382458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com