延迟工作挂钩不起作用?

时间:2011-03-11 16:52:41

标签: ruby-on-rails hook delayed-job

我正试图让我的延迟工作挂钩工作,但他们似乎并不是。它们已经过时了吗?如果他们不是,你能告诉我你的一个例子吗?

这是我的:

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!,那么照片会适当地重新生成并运行。

所以我猜测延迟工作的钩子不起作用。

1 个答案:

答案 0 :(得分:3)

他们一直在为我工作:

class BaseProcessorJob
  def perform
    raise NotImplementedError
  end

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

我最初有一个类似的问题,钩子没有被调用,因为一个过时的delayed_job gem(它实际上是作为一个插件安装,这导致我的问题)。不确定是否有任何帮助你。