我有一个模块,可以在包含到类中时添加类方法。
我想通过编写将包含在第一个模块中的另一个模块来强制该模块扩展新方法。
下面的代码给出了一个我想做但不起作用的例子:如果能够覆盖第一个模块的“self.included”函数来用我的方法扩展基础,那就太好了。
到目前为止,我能够覆盖第一个模块的 self.included 函数,但调用 super 不起作用,所以我放弃了第一个模块的类方法:
module SomeModule
def self.included(base)
base.send(:extend, ClassMethods)
end
module ClassMethods
# Some methods
end
end
module MyNewModule
def self.included(base)
base.class_eval do
def self.included(base)
base.send(:extend, ClassMethods)
super(base)
end
end
end
module ClassMethods
def my_method
end
end
end
SomeModule.send(:include, MyNewModule)
class Pouet
include SomeModule
my_method # undefined local variable or method `my_method' for Pouet:Class (NameError)
end
这可能吗?