これに似た質問があります。アドオンシステムを備えたアプリを書いています。アドオンミックスインモジュールがあります。これは、それが含まれていることを検出し、新しいアドオンを自動的に登録します。
module Addon
def self.included(receiver)
addon = receiver.new # Create an instance of the addon
(snip) # Other stuff to register the addon
addon.on_register # Tell the instance it was registered
end
end
ミックスインの使用例は次のとおりです。
class MyAddon
def on_register
puts "My addon was registered"
end
include Addon # ** note that this is at the end of the class **
end
上記のように、この実装では、インクルードがクラスの最下位にある必要があります。それ以外の場合、self.includedが呼び出されるときにon_registerは定義されません。
私の懸念は、アドオン開発者が誤ってインクルードを一番上に置き、アドオンが機能しなくなる可能性があることです。または、派生クラスなど、MyAddonクラスが既に含まれている後に拡張するものがある可能性があります。
これについてもっと良い方法はありますか?