取り決めは次のとおりです。クラス Box の特定のインスタンスをいくつかのメソッドで拡張する必要があります。モジュール内にライブを含める必要があるメソッドと、Box インスタンスにモジュールを動的に含めることができるようにしたい。今、私はevalでフックを使用しています:
class Box
def after_initialize
if self.injected_module.present?
eval("class << self; include #{self.injected_module}; end")
end
end
end
それは非常にうまく機能していますが、evalを使用すると本当に汚いと感じます。私はそのようなものを探しています:
module_to_inject = self.injected_module
self.eigenclass.class_eval do
include module_to_inject
end
しかし、次のようにクラスにモンキーパッチを適用しないと、固有クラスにclass_evalを実行させることができません。
class Box; def eigenclass; class << self; self; end end end
これを行うための美しい(そして信頼できる)方法はありますか?