【发布时间】:2018-03-24 15:20:49
【问题描述】:
我的 gem 中的一个模块包含在另一个 gem 的一个类中,该类由 Rails 应用程序中的自定义类扩展:
我的宝石:
module MyGem
def my_method
end
end
AnotherGem.send :include, MyGem
另一个宝石:
class AnotherGem
end
Rails 应用程序中的类:
class ClassInRailsApp < AnotherGem
end
运行它会导致以下行为:
$ rails c
Loading development environment (Rails 5.1.4)
irb(main):004:0> MyGem.method_defined? :my_method
=> true
irb(main):005:0> AnotherGem.method_defined? :my_method
=> true
irb(main):006:0> ClassInRailsApp.method_defined? :my_method
NoMethodError: undefined method `my_method' for ClassInRailsApp:Class
如何确保在扩展类之前包含我的模块?
编辑:
我尝试在ClassInRailsApp中直接包含MyGem,但指定的实例方法仍然不可用。问题可能与此有关吗?
【问题讨论】:
-
您的示例代码实际上产生了
true,所以我不确定您的问题是什么,确切地说。这应该可行,并且对我有用。
标签: ruby-on-rails ruby rubygems include autoload