Class: ServiceRunner

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Job, Workers::StatusBroadcastable
Defined in:
app/workers/service_runner.rb

Instance Attribute Summary

Attributes included from Workers::StatusBroadcastable

#broadcast_status_updates

Instance Method Summary collapse

Methods included from Workers::StatusBroadcastable::Overrides

#at, #store, #total

Instance Method Details

#perform(*args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/workers/service_runner.rb', line 7

def perform(*args)
  logger.info " ** Service execution starting, args: #{args.join(', ')}"
  raise 'Missing service info' if args.blank?

  services = [args].flatten
  if services.size == 1 # Perform
    services.each do |service_class_name|
      service = service_class_name.constantize.new(logger: logger)
      begin
        res = service.process
        store result: res.inspect
        logger.debug(" ** #{service_class_name} completed", service: service_class_name)
      rescue StandardError => exc
        ErrorReporting.error(exc, { service_class: service_class_name })
      end
    end
  else # Enqueue individually
    services.each do |service|
      ServiceRunner.perform_async(service)
    end
  end
end