Class: Sidekiq::Recursive::Perform

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/recursive/perform.rb

Class Method Summary collapse

Class Method Details

.run(worker_instance, worker_id, argument) ⇒ Object



2
3
4
5
6
7
8
9
10
11
# File 'lib/sidekiq/recursive/perform.rb', line 2

def self.run(worker_instance, worker_id, argument)
  worker = worker_instance.class
  return worker_instance.process(argument) if worker_id == :failed_worker
  safe_process(worker_instance, argument)
  next_argument = Sidekiq::Recursive::ArgumentQueue.pop(worker)
  return Sidekiq::Recursive::Hooks::AfterAll.run(worker, worker_id) unless next_argument
  worker.perform_async(worker_id, next_argument)

  true
end

.safe_process(worker_instance, argument) ⇒ Object



13
14
15
16
17
# File 'lib/sidekiq/recursive/perform.rb', line 13

def self.safe_process(worker_instance, argument)
  worker_instance.process(argument)
rescue
  worker_instance.class.perform_async(:failed_worker, argument)
end