0

Ruby onRails3.2.9とRuby1.9.3-p125を使用しています。前の質問の後、関連するコードが「カスタマイズ可能として機能する」以外のクラスに副作用があるため、自己実装acts_as_customizableプラグインのメタプログラミングに問題があることになりました。

問題を要約するacts_as_customizableと、Articleモデルに対して「内部的に」(メタプログラミングを介して)記述されたメソッドはモデルにcustomizeメソッドを追加しComment、時間を節約するために、Railsは起動時にこれらすべてのクラスをロードせず、NoMethodError - undefined method 'customize' for #<Comment:0x0...> アプリケーションArticleクラスがロードされます。

提案された解決策はモデルrequire_dependency 'article'内にあることでしたCommentが、私は別の方法(おそらく提案されたものよりも良い)を探していますが、この質問で説明されているような問題はありません。つまり、*短いコード**と同じ動作を維持したいのですが、必要に応じて、クラスの読み込みプロセスを変更したり、コード全体の大規模なリファクタリングを計画したりして、より「適切な」方法で物事を作成します。

この状況にどのように対処すればよいですか?についてどう思いますか?


更新:いくつかの調査の結果、問題は開発モードでのみ発生することがわかりました。これは、リクエストごとにクラスを再ロードするようにconfig.cache_classes設定されているためです。false


Article:私の場合、メタプログラミングは非常に有用であり、Commentクラスは「カスタマイズ」概念の面で相互に非常に関連していることを指摘したいと思います。だから私は、根底にある振る舞いの変化を軽減する解決策を見つけたいと思います。


*私の場合、メタプログラミング(副作用がある場合でも)により、多くのコードステートメントを回避できます。

4

0 に答える 0