我正试图让我的延迟工作挂钩工作,但他们似乎并不是。它们已经过时了吗?如果他们不是,你能告诉我你的一个例子吗?
这是我的:
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!
,那么照片会适当地重新生成并运行。
所以我猜测延迟工作的钩子不起作用。
答案 0 :(得分:3)
他们一直在为我工作:
class BaseProcessorJob
def perform
raise NotImplementedError
end
def error(job, exception)
Rails.logger.error "Job failed #{exception}"
end
end
我最初有一个类似的问题,钩子没有被调用,因为一个过时的delayed_job gem(它实际上是作为一个插件安装,这导致我的问题)。不确定是否有任何帮助你。