Estoy tratando de definir un par de módulos de agregar fácilmente en algunos métodos de instancia y de clase a otras clases, esto es lo que estoy haciendo:rubí - Módulo extienden dentro de otro módulo de
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
La salida de esto es:
welcome, this is an instance method
undefined method 'speak' for Talker.class (NoMethodError)
que estaba esperando a transmisor tiene el método del 'hablar' ya que incluye Foo :: Baz que a su vez se extiende Foo :: Bar.
¿Qué me estoy perdiendo?
así que si hago de Baz una clase en lugar de un módulo y cambio Talker para que subclasifique Baz, mi ejemplo funciona. Pero, ¿es posible hacer lo que estaba tratando de hacer sin convertir a Baz en una clase? (y sin tener que hacer algo como Talker :: Foo :: Bar.speak?) – codecraig