当delayed_job失败时调用特定方法

时间:2017-01-23 16:13:49

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

当我的rails应用程序中的delayed_job失败时,我正在寻找一种方法来进行特定治疗。我不知道它是否可行,以及如何为此配置DelayedJob。
我看到我可以为一项特定工作添加error方法,但我希望所有工作类似。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议您使用Delayed::Plugin并遵循本教程:
http://www.salsify.com/blog/engineering/delayed-jobs-callbacks-and-hooks-in-rails

您可以针对整个应用中的任何作业失败触发事件 例如:



require 'airbrake'
require 'delayed_job'

class AirbrakePlugin < Delayed::Plugin

  callbacks do |lifecycle|
    lifecycle.around(:invoke_job) do |job, *args, &block|
      begin
        # Forward the call to the next callback in the callback chain
        block.call(job, *args)
      rescue Exception => error
        ::Airbrake.notify_or_ignore(
            :error_class   => error.class.name,
            :error_message => "#{error.class.name}: #{error.message}",
            :backtrace => error.backtrace,
            :parameters    => {
                :failed_job => job.inspect
            }
        )
        # Make sure we propagate the failure!
        raise error
      end
    end
  end
&#13;
&#13;
&#13;