Estou pensando na metaprogramação de Ruby. Os módulos / mixin sempre conseguem me confundir.
- incluem : combina em métodos de módulo especificados como métodos de instância na classe de destino
- estender : combina métodos de módulo especificados como métodos de classe na classe de destino
Então, a principal diferença é apenas isso ou um dragão maior está à espreita? por exemplo
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!"