module Delayed::Backend::Base
Constants
- ParseObjectFromYaml
Attributes
error[R]
Public Class Methods
included(base)
click to toggle source
# File lib/delayed/backend/base.rb, line 4 def self.included(base) base.extend ClassMethods end
Public Instance Methods
destroy_failed_jobs?()
click to toggle source
# File lib/delayed/backend/base.rb, line 143 def destroy_failed_jobs? payload_object.respond_to?(:destroy_failed_jobs?) ? payload_object.destroy_failed_jobs? : Delayed::Worker.destroy_failed_jobs rescue DeserializationError Delayed::Worker.destroy_failed_jobs end
error=(error)
click to toggle source
# File lib/delayed/backend/base.rb, line 48 def error=(error) @error = error self.last_error = "#{error.message}\n#{error.backtrace.join("\n")}" if respond_to?(:last_error=) end
fail!()
click to toggle source
# File lib/delayed/backend/base.rb, line 149 def fail! self.failed_at = self.class.db_time_now save! end
failed?()
click to toggle source
# File lib/delayed/backend/base.rb, line 53 def failed? !!failed_at end
Also aliased as: failed
hook(name, *args)
click to toggle source
# File lib/delayed/backend/base.rb, line 106 def hook(name, *args) if payload_object.respond_to?(name) if payload_object.is_a?(Delayed::JobWrapper) return if name == :enqueue # this callback is not supported due to method naming conflicts. warn '[DEPRECATION] Job hook methods (`before`, `after`, `success`, etc) are deprecated. Use ActiveJob callbacks instead.' end method = payload_object.method(name) method.arity.zero? ? method.call : method.call(self, *args) end rescue DeserializationError end
invoke_job()
click to toggle source
# File lib/delayed/backend/base.rb, line 87 def invoke_job Delayed::Worker.lifecycle.run_callbacks(:invoke_job, self) do hook :before payload_object.perform hook :success rescue Exception => e # rubocop:disable Lint/RescueException hook :error, e raise e ensure hook :after end end
max_attempts()
click to toggle source
# File lib/delayed/backend/base.rb, line 128 def max_attempts payload_object.max_attempts if payload_object.respond_to?(:max_attempts) end
max_run_time()
click to toggle source
# File lib/delayed/backend/base.rb, line 132 def max_run_time return unless payload_object.respond_to?(:max_run_time) return unless (run_time = payload_object.max_run_time) if run_time > Delayed::Worker.max_run_time Delayed::Worker.max_run_time else run_time end end
name()
click to toggle source
# File lib/delayed/backend/base.rb, line 60 def name # rubocop:disable Metrics/AbcSize @name ||= payload_object.job_data['job_class'] if payload_object.respond_to?(:job_data) @name ||= payload_object.display_name if payload_object.respond_to?(:display_name) @name ||= payload_object.class.name rescue DeserializationError ParseObjectFromYaml.match(handler)[1] end
payload_object()
click to toggle source
# File lib/delayed/backend/base.rb, line 81 def payload_object @payload_object ||= YAML.load_dj(handler) rescue TypeError, LoadError, NameError, ArgumentError, SyntaxError, Psych::SyntaxError => e raise DeserializationError, "Job failed to load: #{e.message}. Handler: #{handler.inspect}" end
payload_object=(object)
click to toggle source
# File lib/delayed/backend/base.rb, line 76 def payload_object=(object) @payload_object = object self.handler = YAML.dump_dj(object) end
priority()
click to toggle source
Calls superclass method
# File lib/delayed/backend/base.rb, line 68 def priority Priority.new(super) end
priority=(value)
click to toggle source
Calls superclass method
# File lib/delayed/backend/base.rb, line 72 def priority=(value) super(Priority.new(value)) end
reschedule_at()
click to toggle source
# File lib/delayed/backend/base.rb, line 120 def reschedule_at if payload_object.respond_to?(:reschedule_at) payload_object.reschedule_at(self.class.db_time_now, attempts) else self.class.db_time_now + (attempts**4) + 5 end end
unlock()
click to toggle source
Unlock this job (note: not saved to DB)
# File lib/delayed/backend/base.rb, line 101 def unlock self.locked_at = nil self.locked_by = nil end
Protected Instance Methods
reset()
click to toggle source
Call during reload operation to clear out internal state
# File lib/delayed/backend/base.rb, line 161 def reset @payload_object = nil end
set_default_run_at()
click to toggle source
# File lib/delayed/backend/base.rb, line 156 def set_default_run_at self.run_at ||= self.class.db_time_now end