В чем разница между включением и расширением в Ruby?
Просто разбираюсь в метапрограммировании Ruby. Миксин / модули всегда меня смущают.
включают: смешивает в указанных методах модуля какметоды экземпляра в целевом классепростираться: смешивает в указанных методах модуля какметоды класса в целевом классеЗначит, главное отличие в этом или скрывается больший дракон? например
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!"