class Rjob::Job

Constants

DeserializationError

Attributes

context[R]
id[RW]
payload[R]
retry_num[RW]

Public Class Methods

deserialize(context, job_str) click to toggle source
# File lib/rjob/job.rb, line 36
def self.deserialize(context, job_str)
  first = job_str.index('!')
  second = job_str.index('!', first + 1)

  if first == nil || second == nil
    raise DeserializationError.new("Malformed job string: '#{job_str}'")
  end

  begin
    new(context).tap do |job|
      job.id = job_str[0...first]
      job.retry_num = job_str[(first + 1)...second].to_i
      job.payload = job_str[(second + 1)..-1]
    end
  rescue MessagePack::MalformedFormatError => e
    raise DeserializationError.new("Malformed job msgpack payload: #{e.message}")
  end
end
new(context) click to toggle source
# File lib/rjob/job.rb, line 11
def initialize(context)
  @context = context
end

Public Instance Methods

payload=(str) click to toggle source
# File lib/rjob/job.rb, line 27
def payload=(str)
  @payload = str
  @deserialized_payload = MessagePack.unpack(str)
end
serialize() click to toggle source
# File lib/rjob/job.rb, line 32
def serialize
  "#{@id}!#{@retry_num}!#{@payload}".b
end
worker_args() click to toggle source
# File lib/rjob/job.rb, line 23
def worker_args
  @deserialized_payload[1]
end
worker_class() click to toggle source
# File lib/rjob/job.rb, line 19
def worker_class
  @context.fetch_worker_class(class_name: worker_class_name)
end
worker_class_name() click to toggle source
# File lib/rjob/job.rb, line 15
def worker_class_name
  @deserialized_payload[0]
end