Module Delayed::Backend::Base
In: lib/delayed/backend/base.rb

Methods

Classes and Modules

Module Delayed::Backend::Base::ClassMethods

Constants

ParseObjectFromYaml = /\!ruby\/\w+\:([^\s]+)/

Public Class methods

[Source]

   # File lib/delayed/backend/base.rb, line 4
4:       def self.included(base)
5:         base.extend ClassMethods
6:       end

Public Instance methods

[Source]

     # File lib/delayed/backend/base.rb, line 131
131:       def fail!
132:         update_attributes(:failed_at => self.class.db_time_now)
133:       end
failed()

Alias for failed?

[Source]

    # File lib/delayed/backend/base.rb, line 64
64:       def failed?
65:         !!failed_at
66:       end

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

     # 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)

[Source]

     # File lib/delayed/backend/base.rb, line 107
107:       def unlock
108:         self.locked_at    = nil
109:         self.locked_by    = nil
110:       end

Protected Instance methods

Call during reload operation to clear out internal state

[Source]

     # File lib/delayed/backend/base.rb, line 142
142:       def reset
143:         @payload_object = nil
144:       end

[Source]

     # File lib/delayed/backend/base.rb, line 137
137:       def set_default_run_at
138:         self.run_at ||= self.class.db_time_now
139:       end

[Validate]