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