class Toro::Middleware::Server::Retry

Public Instance Methods

call(job, worker) { || ... } click to toggle source
# File lib/toro/middleware/server/retry.rb, line 5
def call(job, worker)
  begin
    yield
  rescue Exception => exception
    if worker.toro_options[:retry_interval]
      interval = worker.toro_options[:retry_interval]
      job.reload
      job.properties ||= {}
      job.properties['retry:errors'] ||= []
      job.properties['retry:errors'] << "#{exception.class.name} -- #{exception.message} -- #{Time.now}"
      job.status = 'scheduled'
      job.scheduled_at = Time.now + interval
      job.save
    end
    raise exception
  end
end