2017-01-23 2 views
1

私は、レールアプリケーションでdelayed_jobが失敗したときに特定の処理を行う方法を探しています。私はそれが可能であるかどうか、どのように私はそれのためのDelayedJobを構成することができますか分からない。
特定のジョブに対してerrorメソッドを追加できることがわかりましたが、すべてのジョブに似たものが欲しいです。delayed_jobが失敗したときに特定のメソッドを呼び出す

アイデア?

答えて

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

関連する問題