ruby - расширение модуля внутри другого модуля

Я пытаюсь определить пару модулей, чтобы легко добавить методы экземпляров и классов к другим классам, вот что я делаю:

module Foo
  module Bar
    def speak
      puts "hey there"
    end
  end
  module Baz
    extend Foo::Bar

    def welcome
      puts "welcome, this is an instance method"
    end
  end
end

class Talker
  include Foo::Baz
end

Talker.new.welcome
Talker.speak

Результат:

welcome, this is an instance method
undefined method 'speak' for Talker.class (NoMethodError)

Я был ожидается, что Talker будет иметь метод «говорить», так как он включает Foo :: Baz, который сам расширяет Foo :: Bar.

Что мне не хватает?

19
задан codecraig 30 March 2011 в 14:06
поделиться