我有一个模块Top
,它有模块A
和B
. 在他们每个人中,我都想使用 module 的类方法C
。为此,我必须包含C
每个模块A
和B
. 是否可以包含在内C
,Top
以便所有子模块都可以访问其类方法?
例子:
# I'll extend module C in example to make it shorter
module C
def foo; puts 'Foo!' end
end
module Top
extend C
module A end
module B end
end
# That's how it works now
Top.foo
#=> "Foo!"
Top::A.foo
#=> NoMethodError: undefined method `foo' for Top::A:Module
Top::B.foo
#=> NoMethodError: undefined method `foo' for Top::B:Module
# That's how I want it to work
Top.foo
#=> "Foo!"
Top::A.foo
#=> "Foo!"
Top::B.foo
#=> "Foo!"