クラスに含まれるときにクラスメソッドを追加するモジュールがあります。
最初のモジュールに含まれる別のモジュールを作成して、このモジュールに新しいメソッドを拡張させたいと思います。
次のコードは、私がやりたいことの例を示していますが、機能しません。最初のモジュールの「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
これは可能ですか?