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 130
130:       def fail!
131:         update_attributes(:failed_at => self.class.db_time_now)
132:       end
failed()

Alias for failed?

[Source]

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

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

[Source]

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

[Source]

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

Protected Instance methods

Call during reload operation to clear out internal state

[Source]

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

[Source]

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

[Validate]