class Resque::Pertry::ResquePertryPersistence

Public Class Methods

create_job_if_needed(klass, args) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 17
def create_job_if_needed(klass, args)
  with_job(klass, args) do |job|
    # we already have a job for this, we don't want another
    return if job

    # creating a new job
    params = {
      :audit_id => field_from_args('audit_id', args),
      :job => klass.to_s,
      :arguments => Resque.encode(args), 
      :attempt => 0,
      :enqueued_at => field_from_args('queue_time', args)
    }

    params[:expires_at] = params[:enqueued_at] + klass.retry_ttl if klass.retry_ttl

    new(params).save!
  end
end
fail_job(klass, args) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 55
def fail_job(klass, args)
  with_job(klass, args) do |job|
    return unless job
    return if job.finnished?
    job.update_attribute(:failed_at, Time.now)
  end
end
finnish_job(klass, args) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 38
def finnish_job(klass, args)
  with_job(klass, args) do |job|
    return unless job
    return if job.finnished?
    job.update_attribute(:completed_at, Time.now)
  end
end
trying_job(klass, args) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 46
def trying_job(klass, args)
  with_job(klass, args) do |job|
    return unless job
    return if job.finnished?
    job.update_attributes(  :last_tried_at => Time.now,
                            :attempt => job.attempt + 1)
  end
end
with_job(klass, args, &block) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 63
def with_job(klass, args, &block)
  audit_id = field_from_args('audit_id', args)
  return unless audit_id
  
  job = find_by_audit_id(audit_id)
  block.call(job) if block_given?
end

Private Class Methods

field_from_args(field, args) click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 73
def field_from_args(field, args)
  pertry_hash = args[Resque::Plugins::Pertry::JOB_HASH] || args[Resque::Plugins::Pertry::JOB_HASH.to_s] || {}
  pertry_hash[field]
end

Public Instance Methods

completed?() click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 80
def completed?
  completed_at
end
expired?() click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 84
def expired?
  expires_at < Time.now
end
failed?() click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 88
def failed?
  failed_at
end
finnished?() click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 92
def finnished?
  completed? || failed? || expired?
end
payload() click to toggle source
# File lib/resque/pertry/resque_pertry_persistence.rb, line 96
def payload
  @payload ||= Resque.decode(arguments)
end