Sha256: 3b7413b8e6cbe79e1a66baa298bfb9e3fd679ba4d5bd6ec7a948007c9742a127
Contents?: true
Size: 1.04 KB
Versions: 9
Compression:
Stored size: 1.04 KB
Contents
module BackgroundWorker class WorkerExecution attr_reader :worker, :method_name, :options def initialize(worker, method_name, options) fail ArgumentError, "'uid' is required to identify worker" unless options[:uid].present? @worker = worker @method_name = method_name @options = options end def call worker.send(method_name, options) report_implicitly_successful unless completed? rescue StandardError => e log_worker_error(e) BackgroundWorker.after_exception(e) ensure log_worker_finality end private def completed? worker.state.completed end def report_implicitly_successful worker.report_successful end def log_worker_error(e) worker.log("Implicit failure: Exception: #{e}", severity: :error) worker.report_failed("An unhandled error occurred: #{e}") unless completed? end def log_worker_finality worker.log "Final state: #{worker.state.data}" worker.log "Job was #{worker.state.status}" end end end
Version data entries
9 entries across 9 versions & 1 rubygems