2010-08-14 54 views
0

我的我的/ lib文件夾中有一個類,我的delayed_job守護進程調用它來處理Foo類型的對象。如果我在worker類中沒有「require'foo'」,那麼它不知道如何處理從數據庫獲得的YAML,並且我得到「undefined method」錯誤。加入「require」foo'「顯然會解決這個問題,這是通常的解決方案。避免在/ lib文件夾的delayed_job類中使用'requires'

但是......問題是我在class Foo中有counter_cache => true。那麼會發生什麼情況是,當DJ守護進程加載Rails環境時,Foo會自動加載,併爲我的counter_cache添加回調。然後,delayed_job守護進程運行,執行「requires'foo'」,並且乖乖地重新加載Foo併爲counter_cache添加了另一個回調,這導致我的counter_cache爲添加或刪除的每一行更新兩次。

有沒有辦法包裝:counter_cache => true,所以它只運行一次?有沒有辦法讓我的DJ工人類使用'Foo'類型的對象而不必明確使用'require'? ?

回答

0

另有定義的(美孚)可以幫助:

class Foo 
    .. 
end unless defined?(Foo) 

這讓我想起模式C封閉my.h的內容到的#ifndef的.. #ENDIF:

#ifndef _MY_H_ 
#define _MY_H_ 

#endif /* _MY_H_ */ 
相關問題