Delayed::Backend::Base

Public Class Methods

included(base) click to toggle source
# File lib/delayed/backend/base.rb, line 4
def self.included(base)
  base.extend ClassMethods
end

Public Instance Methods

fail!() click to toggle source
# File lib/delayed/backend/base.rb, line 131
def fail!
  update_attributes(:failed_at => self.class.db_time_now)
end
failed() click to toggle source
Alias for: failed?
failed?() click to toggle source
# File lib/delayed/backend/base.rb, line 64
def failed?
  !!failed_at
end
Also aliased as: failed
hook(name, *args) click to toggle source
# File lib/delayed/backend/base.rb, line 112
def hook(name, *args)
  if payload_object.respond_to?(name)
    method = payload_object.method(name)
    method.arity == 0 ? method.call : method.call(self, *args)
  end
rescue DeserializationError
  # do nothing
end
invoke_job() click to toggle source
# File lib/delayed/backend/base.rb, line 91
def invoke_job
  Delayed::Worker.lifecycle.run_callbacks(:invoke_job, self) do
    begin
      hook :before
      payload_object.perform
      hook :success
    rescue Exception => e
      hook :error, e
      raise e
    ensure
      hook :after
    end
  end
end
max_attempts() click to toggle source
# File lib/delayed/backend/base.rb, line 127
def max_attempts
  payload_object.max_attempts if payload_object.respond_to?(:max_attempts)
end
name() click to toggle source
# File lib/delayed/backend/base.rb, line 71
def name
  @name ||= payload_object.respond_to?(:display_name) ?
              payload_object.display_name :
              payload_object.class.name
rescue DeserializationError
  ParseObjectFromYaml.match(handler)[1]
end
payload_object() click to toggle source
# File lib/delayed/backend/base.rb, line 84
def payload_object
  @payload_object ||= YAML.load(self.handler)
rescue TypeError, LoadError, NameError, ArgumentError => e
  raise DeserializationError,
    "Job failed to load: #{e.message}. Handler: #{handler.inspect}"
end
payload_object=(object) click to toggle source
# File lib/delayed/backend/base.rb, line 79
def payload_object=(object)
  @payload_object = object
  self.handler = object.to_yaml
end
reschedule_at() click to toggle source
# File lib/delayed/backend/base.rb, line 121
def reschedule_at
  payload_object.respond_to?(:reschedule_at) ?
    payload_object.reschedule_at(self.class.db_time_now, attempts) :
    self.class.db_time_now + (attempts ** 4) + 5
end
unlock() click to toggle source

Unlock this job (note: not saved to DB)

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

Protected Instance Methods

reset() click to toggle source

Call during reload operation to clear out internal state

# File lib/delayed/backend/base.rb, line 142
def reset
  @payload_object = nil
end
set_default_run_at() click to toggle source
# File lib/delayed/backend/base.rb, line 137
def set_default_run_at
  self.run_at ||= self.class.db_time_now
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.