module Delayed::Backend::Base
Constants
- ParseObjectFromYaml
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
fail!()
click to toggle source
# File lib/delayed/backend/base.rb, line 142 def fail! update_attributes(:failed_at => self.class.db_time_now) end
failed?()
click to toggle source
# File lib/delayed/backend/base.rb, line 66 def failed? !!failed_at end
Also aliased as: failed
hook(name, *args)
click to toggle source
# File lib/delayed/backend/base.rb, line 111 def hook(name, *args) if payload_object.respond_to?(name) method = payload_object.method(name) method.arity == 0 ? method.call : method.call(self, *args) end rescue DeserializationError # rubocop:disable HandleExceptions end
invoke_job()
click to toggle source
# File lib/delayed/backend/base.rb, line 90 def invoke_job Delayed::Worker.lifecycle.run_callbacks(:invoke_job, self) do begin hook :before payload_object.perform hook :success rescue => e hook :error, e raise e ensure hook :after end end end
max_attempts()
click to toggle source
# File lib/delayed/backend/base.rb, line 127 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 131 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 73 def name @name ||= payload_object.respond_to?(:display_name) ? payload_object.display_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 84 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 79 def payload_object=(object) @payload_object = object self.handler = object.to_yaml end
reschedule_at()
click to toggle source
# File lib/delayed/backend/base.rb, line 119 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 106 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 153 def reset @payload_object = nil end
set_default_run_at()
click to toggle source
# File lib/delayed/backend/base.rb, line 148 def set_default_run_at self.run_at ||= self.class.db_time_now end