| Module | Delayed::Backend::Base |
| In: |
lib/delayed/backend/base.rb
|
| ParseObjectFromYaml | = | /\!ruby\/\w+\:([^\s]+)/ |
# File lib/delayed/backend/base.rb, line 4 4: def self.included(base) 5: base.extend ClassMethods 6: end
# File lib/delayed/backend/base.rb, line 130
130: def fail!
131: update_attributes(:failed_at => self.class.db_time_now)
132: end
# File lib/delayed/backend/base.rb, line 111
111: def hook(name, *args)
112: if payload_object.respond_to?(name)
113: method = payload_object.method(name)
114: method.arity == 0 ? method.call : method.call(self, *args)
115: end
116: rescue DeserializationError
117: # do nothing
118: end
# File lib/delayed/backend/base.rb, line 90
90: def invoke_job
91: Delayed::Worker.lifecycle.run_callbacks(:invoke_job, self) do
92: begin
93: hook :before
94: payload_object.perform
95: hook :success
96: rescue Exception => e
97: hook :error, e
98: raise e
99: ensure
100: hook :after
101: end
102: end
103: end
# File lib/delayed/backend/base.rb, line 126
126: def max_attempts
127: payload_object.max_attempts if payload_object.respond_to?(:max_attempts)
128: end
# File lib/delayed/backend/base.rb, line 70
70: def name
71: @name ||= payload_object.respond_to?(:display_name) ?
72: payload_object.display_name :
73: payload_object.class.name
74: rescue DeserializationError
75: ParseObjectFromYaml.match(handler)[1]
76: end
# File lib/delayed/backend/base.rb, line 83
83: def payload_object
84: @payload_object ||= YAML.load(self.handler)
85: rescue TypeError, LoadError, NameError, ArgumentError => e
86: raise DeserializationError,
87: "Job failed to load: #{e.message}. Handler: #{handler.inspect}"
88: end
# File lib/delayed/backend/base.rb, line 78
78: def payload_object=(object)
79: @payload_object = object
80: self.handler = object.to_yaml
81: end
# File lib/delayed/backend/base.rb, line 120
120: def reschedule_at
121: payload_object.respond_to?(:reschedule_at) ?
122: payload_object.reschedule_at(self.class.db_time_now, attempts) :
123: self.class.db_time_now + (attempts ** 4) + 5
124: end
Unlock this job (note: not saved to DB)
# File lib/delayed/backend/base.rb, line 106
106: def unlock
107: self.locked_at = nil
108: self.locked_by = nil
109: end
Call during reload operation to clear out internal state
# File lib/delayed/backend/base.rb, line 141
141: def reset
142: @payload_object = nil
143: end