2011-03-11 143 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创业板类似的问题(它实际上是安装一个插件,它引起了我的问题)。不知道是否有任何帮助你。