chu*_*bsy 5 delayed-job ruby-on-rails-4 rails-activejob
我正在使用rails ActiveJob的delayed_job适配器,但是仍然能够访问delayed_job的错误和故障挂钩,以便在作业出错或失败时触发通知邮件程序.
我想我已经跟踪了我需要扩展的ActiveJob代码片段,以便合并delayed_job的错误和失败方法.
如何扩展下面的JobWrapper类以包含delayed_job的错误和失败方法,以便我可以逐个使用自定义错误/失败代码?
require "delayed_job"
module ActiveJob
module QueueAdapters
class DelayedJobAdapter
def enqueue(job)
delayed_job = Delayed::Job.enqueue(JobWrapper.new(job.serialize), queue: job.queue_name, priority: job.priority)
job.provider_job_id = delayed_job.id
delayed_job
end
def enqueue_at(job, timestamp)
delayed_job = Delayed::Job.enqueue(JobWrapper.new(job.serialize), queue: job.queue_name, priority: job.priority, run_at: Time.at(timestamp))
job.provider_job_id = delayed_job.id
delayed_job
end
class JobWrapper
attr_accessor :job_data
def initialize(job_data)
@job_data = job_data
end
def perform
Base.execute(job_data)
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
ActiveJob 实现了ActiveSupport::Rescuable这意味着您可以使用rescue_from。
class MyJob < ActiveJob::Base
rescue_from Exception do |e|
# do something with e
end
# rest of your job
end
Run Code Online (Sandbox Code Playgroud)