/lib フォルダにクラスがあり、delayed_job デーモンが Foo 型のオブジェクトを処理するために呼び出すクラスがあります。ワーカー クラスに「requires 'foo'」がない場合、DB から取得した YAML をどう処理するかがわからず、「undefined method」エラーが発生します。「requires 'foo'」を追加すると、明らかにこれが修正されます。これが通常の解決策です。
しかし..問題は、Foo クラスに counter_cache=>true があることです。DJ デーモンが Rails 環境をロードすると、Foo が自動ロードされ、counter_cache にコールバックが追加されます。次に、delayed_job デーモンが実行され、「requires 'foo'」が実行され、素直に Foo がリロードされ、counter_cache に別のコールバックが追加されます。その結果、counter_cache は行が追加または削除されるたびに 2 回更新されます。
:counter_cache=>true をラップして 1 回だけ実行する方法はありますか? 「requires」を明示的に使用せずに、DJ ワーカー クラスで「Foo」タイプのオブジェクトを使用する方法はありますか?