Method: MultiBackgroundJob::Adapters::Faktory.coerce_to_worker

Defined in:
lib/multi_background_job/adapters/faktory.rb

.coerce_to_worker(payload, **options) ⇒ MultiBackgroundJob::Worker

Coerces the raw payload into an instance of Worker

Parameters:

  • payload (Hash)

    The job as json from redis

Returns:

Raises:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/multi_background_job/adapters/faktory.rb', line 26

def self.coerce_to_worker(payload, **options)
  raise(Error, 'invalid payload') unless payload.is_a?(Hash)
  raise(Error, 'invalid payload') unless payload['jobtype'].is_a?(String)

  options[:retry] ||= payload['retry'] if payload.key?('retry')
  options[:queue] ||= payload['queue'] if payload.key?('queue')

  MultiBackgroundJob[payload['jobtype'], **options].tap do |worker|
    worker.with_args(*Array(payload['args'])) if payload.key?('args')
    worker.with_job_jid(payload['jid']) if payload.key?('jid')
    worker.created_at(payload['created_at']) if payload.key?('created_at')
    worker.enqueued_at(payload['enqueued_at']) if payload.key?('enqueued_at')
    worker.at(payload['at']) if payload.key?('at')
    worker.unique(payload['uniq']) if payload.key?('uniq')
  end
end