delayed_job的exception_notification

对于delayed_job,是否有类似exception_notification的gem? 最好与REE-1.8.7和Rails 2.3.10一起使用。

我过去做过类似的事情来延迟工作佣金任务:

require 'action_mailer' class ExceptionMailer < ActionMailer::Base def setup_mail @from = ExceptionNotifier.sender_address @sent_on = Time.now @content_type = "text/plain" end def exception_message(subject, message) setup_mail @subject = subject @recipients = ExceptionNotifier.exception_recipients @body = message end end namespace :jobs do desc "sync the local database with the remote CMS" task(:sync_cms => :environment) do Resort.sync_all! result = Delayed::Job.work_off unless result[1].zero? ExceptionMailer.deliver_exception_message("[SYNC CMS] Error syncing CMS id: #{Delayed::Job.last.id}", Delayed::Job.last.last_error) end end 

结束

将此模块包含在要延迟的类中:

 require 'exception_notifier' module Delayed module ExceptionNotifier # Send error via exception notifier def error(job, e) env = {} env['exception_notifier.options'] = { :sections => %w(backtrace delayed_job), :email_prefix => '[Delayed Job ERROR] ', :exception_recipients => %w(some@email.com), :sender_address => %(other@email.com) } env['exception_notifier.exception_data'] = {:job => job} ::ExceptionNotifier::Notifier.exception_notification(env, e).deliver end end end 

并在app / views / exception_notifier / _delayed_job.text.erb中为通知创建模板:

 Job name: <%= @job.name %> Job: <%= raw @job.inspect %> * Process: <%= raw $$ %> * Server : <%= raw `hostname -s`.chomp %>