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