Недавно мне пришлось добавить метод в основной класс Redmine. Мне не удалось использовать наследование, поэтому я сделал что-то вроде этого:
require_dependency 'time_entry_query'
class TimeEntryQuery < Query
def my_new_method(foo, bar)
end
end
и он отлично работает - мой метод добавляется ко всем новым объектам. Однако я видел, как кто-то вместо этого объявлял новый метод в своем собственном модуле, а затем отправлял: include в класс, чтобы он стал миксином. Вот пример:
module Patches
module SomeClassPatch
def my_new_method
end
end
и где-то при инициализации приложения:
SomeClass.send(:include, Patches::SomeClassPatch) unless SomeClass.include? (Patches::SomeClassPatch)
В чем разница между этими двумя методами и какой из них я должен использовать?