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 131 131: def fail! 132: update_attributes(:failed_at => self.class.db_time_now) 133: end
# File lib/delayed/backend/base.rb, line 112 112: def hook(name, *args) 113: if payload_object.respond_to?(name) 114: method = payload_object.method(name) 115: method.arity == 0 ? method.call : method.call(self, *args) 116: end 117: rescue DeserializationError 118: # do nothing 119: end
# File lib/delayed/backend/base.rb, line 91 91: def invoke_job 92: Delayed::Worker.lifecycle.run_callbacks(:invoke_job, self) do 93: begin 94: hook :before 95: payload_object.perform 96: hook :success 97: rescue Exception => e 98: hook :error, e 99: raise e 100: ensure 101: hook :after 102: end 103: end 104: end
# File lib/delayed/backend/base.rb, line 127 127: def max_attempts 128: payload_object.max_attempts if payload_object.respond_to?(:max_attempts) 129: end
# File lib/delayed/backend/base.rb, line 71 71: def name 72: @name ||= payload_object.respond_to?(:display_name) ? 73: payload_object.display_name : 74: payload_object.class.name 75: rescue DeserializationError 76: ParseObjectFromYaml.match(handler)[1] 77: end
# File lib/delayed/backend/base.rb, line 84 84: def payload_object 85: @payload_object ||= YAML.load(self.handler) 86: rescue TypeError, LoadError, NameError, ArgumentError => e 87: raise DeserializationError, 88: "Job failed to load: #{e.message}. Handler: #{handler.inspect}" 89: end
# File lib/delayed/backend/base.rb, line 79 79: def payload_object=(object) 80: @payload_object = object 81: self.handler = object.to_yaml 82: end
# File lib/delayed/backend/base.rb, line 121 121: def reschedule_at 122: payload_object.respond_to?(:reschedule_at) ? 123: payload_object.reschedule_at(self.class.db_time_now, attempts) : 124: self.class.db_time_now + (attempts ** 4) + 5 125: end
Unlock this job (note: not saved to DB)
# File lib/delayed/backend/base.rb, line 107 107: def unlock 108: self.locked_at = nil 109: self.locked_by = nil 110: end
Call during reload operation to clear out internal state
# File lib/delayed/backend/base.rb, line 142 142: def reset 143: @payload_object = nil 144: end