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