delayed_job_config.rb 1.18 KB
require 'delayed_job'
Delayed::Worker.backend = :active_record
Delayed::Worker.max_attempts = 2

class Delayed::Job
  def self.handler_like(handler)
    Delayed::Job.where("handler LIKE '%#{handler}%'")
  end

  def self.by_handler(handler)
    Delayed::Job.where(:handler => handler)
  end
end

# TODO This is consuming ton of space on development with a postgres connection
# error on the jobs. This must be verified before going into production.
# Logging jobs backtraces
#class Delayed::Worker
#  def handle_failed_job_with_loggin(job, error)
#    handle_failed_job_without_loggin(job,error)
#    Delayed::Worker.logger.error(error.message)
#    Delayed::Worker.logger.error(error.backtrace.join("\n"))
#  end
#  alias_method_chain :handle_failed_job, :loggin
#end

# Chain delayed job's handle_failed_job method to do exception notification
Delayed::Worker.class_eval do
  def handle_failed_job_with_notification job, error
    handle_failed_job_without_notification job, error
    ExceptionNotifier.notify_exception error, exception_recipients: NOOSFERO_CONF['exception_recipients'],
      data: {job: job, handler: job.handler} rescue nil
  end
  alias_method_chain :handle_failed_job, :notification
end