如何让嵌套的一系列模块中定义的类方法在模块mixin树中传播?Ruby模块类继承方法
考虑以下几点:
module A
def self.included(base)
base.extend(ClassMethods)
end
def foo; end
module ClassMethods
def bar; end
end
end
module B
include A
end
class C
include B
end
puts "B class methods: #{(B.methods-Module.methods).inspect}"
puts "B instance methods #{B.instance_methods.inspect}"
puts "C class methods: #{(C.methods-Class.methods).inspect}"
puts "C instance methods #{(C.instance_methods-Class.instance_methods).inspect}"
C类不继承A中所定义的类方法,即使包括B.
B class methods: [:bar]
B instance methods [:foo]
C class methods: []
C instance methods [:foo]
是否能保证在该类一种巧妙的方法来自A的方法向上传播到C(所以我可以调用C.bar)?我正在寻找一种很好的通用方法,它不涉及每个继承的模块专门调用和扩展C的方法。
亲切的问候
史蒂夫