我有一個模塊,可以在添加到類中時添加類方法。將類方法添加到ruby中的現有模塊中
我想強制這個模塊通過編寫第一個包含的另一個模塊來擴展新的方法。
下面的代碼給出了我想要做的事情的一個例子: 能夠重寫第一個模塊的「self.included」函數以擴展我的方法的基礎會很棒。
到目前爲止,我是能夠覆蓋第一模塊的self.included功能,但調用超不工作,所以我失去了第一個模塊的類方法:
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
這可能嗎?