class Rjob::JobProcessor

Processes one single job.

Attributes

context[R]
error[R]
job[R]
job_str[R]

Public Class Methods

new(context, job_str) click to toggle source
# File lib/rjob/job_processor.rb, line 10
def initialize(context, job_str)
  @context = context
  @job_str = job_str
  @error = nil
  @force_dont_retry = false
  @success = false
end

Public Instance Methods

run() click to toggle source
# File lib/rjob/job_processor.rb, line 26
def run
  job = Rjob::Job.deserialize(@context, @job_str)
  @job = job

  job_args = job.worker_args

  worker_class = begin
    job.worker_class
  rescue NameError
    @error = { message: "No worker class '#{job.worker_class_name}'" }
    @force_dont_retry = true
    return
  end

  begin
    worker_instance = worker_class.new(@context, job)
    worker_instance.perform(*job_args)
    @success = true
  rescue Exception => e
    @error = { error_class: e.class, message: e.message }
  end
end
stop_retry?() click to toggle source
# File lib/rjob/job_processor.rb, line 22
def stop_retry?
  @force_dont_retry
end
success?() click to toggle source
# File lib/rjob/job_processor.rb, line 18
def success?
  @success
end