У меня есть следующая конфигурация:
module A module B def foo puts "foo" end end end class C include A end c = C.new c.foo NoMethodError: undefined method `foo' for #<C:0x8765284>
Как мне достичь вышеуказанного?
Спасибо.
Модуль B «определен» внутри A, он не «включен» в A. Вот почему вы не получаете доступ к методу экземпляра #foo, когда включаете модуль A в C.следующее:
class C include A::B end C.new.foo
Вы можете использовать обратный вызов included, чтобы включить B, если включено A.
included
B
A
module A def A.included(klass) klass.include B end module B def foo puts "foo" end end end class C include A end
и следующее будет работать
c = C.new c.foo