2011-03-11 140 views
0

我試圖讓我的延期工作掛鉤工作,但他們似乎並沒有。他們過時了嗎?如果他們不是,你能告訴我一個你的例子嗎?延遲作業掛鉤不起作用?

這裏是我的:

class PhotoJob < Struct.new(:image_id) 
    def perform 
    Photo.find(self.image_id).regenerate_styles! 
    end 
    def error(job, exception) 
    if Photo.exists?(self.image_id) 
     Photo.find(self.image_id).regenerate_styles! 
    else 
     Delayed::Job.find(self).destroy 
    end 
    end 
end 

我說,他們不工作的原因是因爲如果我上傳一個幾百張圖片,其中一半將錯誤失敗。如果錯誤發生,那麼鉤子應該運行,對吧?

以下是捕捉,如果我找到失敗的照片,並運行Photo.find(n).regenerate_styles!,然後照片適當地重新生成和工作。

所以我猜測Delayed Jobs的掛鉤不起作用。

+0

你是否真的在執行函數中引發了一個錯誤來測試錯誤是否被調用?或者你只是猜測錯誤沒有被調用? – 2011-03-11 20:05:24

回答

3

他們已經工作確定爲我:

class BaseProcessorJob 
    def perform 
    raise NotImplementedError 
    end 

    def error(job, exception) 
    Rails.logger.error "Job failed #{exception}" 
    end 
end 

我本來有鉤沒有得到調用,因爲一個過時的delayed_job創業板類似的問題(它實際上是安裝一個插件,它引起了我的問題)。不知道是否有任何幫助你。