Ruby onRails3.2.9とRuby1.9.3-p125を使用しています。シナリオは次のとおりです。
acts_as_customizable
プラグインを実装し、Article
「カスタマイズ可能として機能する」モデルクラスがあります。プラグインは、メタプログラミングを通じて、モデルクラスに名前が付けられたメソッドを追加します(注:それ以降、オブジェクトのスコープ外でオブジェクトを操作するため、プラグインには副作用があります)。customize
Comment
Comment
Article
そのシナリオを考えると、サーバーを(再)起動して実行すると@comment.customize
、エラーが発生しますNoMethodError - undefined method 'customize' for #<Comment:0x0...>
。ただし、サーバーを(再)起動して次のコードを実行すると、すべてが期待どおりに機能します。
Article
@comment.customize
「悪」の部分を理解した場合、メソッドを実行する前Article
にクラスを「単純に」呼び出すと、メソッドが起動され、(メタプログラミングによって)クラスにメソッドが追加されるため、上記のコードは機能します。customize
acts_as_customizable
customize
Comment
どうすれば「悪」を避けることができますか?