最近、Redmine のコア クラスにメソッドを追加する必要がありました。継承を使用できなかったので、次のようにしました。
require_dependency 'time_entry_query'
class TimeEntryQuery < Query
def my_new_method(foo, bar)
end
end
そしてそれは完全に機能します-私のメソッドはすべての新しいオブジェクトに追加されます。ただし、代わりに独自のモジュールで新しいメソッドを宣言し、クラスに :include を送信して mixin にする人を見たことがあります。次に例を示します。
module Patches
module SomeClassPatch
def my_new_method
end
end
アプリの初期化のどこかで:
SomeClass.send(:include, Patches::SomeClassPatch) unless SomeClass.include? (Patches::SomeClassPatch)
これら 2 つの方法の違いと、どちらを使用する必要がありますか?