Solo estoy entendiendo la metaprogramación de Ruby. Los módulos / mixin siempre logran confundirme.
- incluyen : mezclas en métodos de módulo especificados como métodos de instancia en la clase de destino
- extender : se mezcla en métodos de módulo especificados como métodos de clase en la clase de destino
Entonces, ¿la diferencia principal es solo esto o hay un dragón más grande al acecho? p.ej
module ReusableModule
def module_method
puts "Module Method: Hi there!"
end
end
class ClassThatIncludes
include ReusableModule
end
class ClassThatExtends
extend ReusableModule
end
puts "Include"
ClassThatIncludes.new.module_method # "Module Method: Hi there!"
puts "Extend"
ClassThatExtends.module_method # "Module Method: Hi there!"