Class: Writefully::Tools::Retryer

Inherits:
Object
  • Object
show all
Includes:
Celluloid
Defined in:
lib/writefully/tools/retryer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#jobObject

Returns the value of attribute job.



6
7
8
# File 'lib/writefully/tools/retryer.rb', line 6

def job
  @job
end

Instance Method Details

#delayObject



21
22
23
# File 'lib/writefully/tools/retryer.rb', line 21

def delay
  (job[:message][:tries] * job[:message][:tries]).seconds
end

#mark_as_failedObject



25
26
27
# File 'lib/writefully/tools/retryer.rb', line 25

def mark_as_failed
  Writefully.redis.with { |c| c.sadd 'failed', Marshal.dump(job) }
end

#queue_retryObject



17
18
19
# File 'lib/writefully/tools/retryer.rb', line 17

def queue_retry
  Writefully.add_job job[:worker], job[:message].merge({ run: true })
end

#retry(job) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/writefully/tools/retryer.rb', line 8

def retry(job)
  @job   = job
  if job[:message][:tries] <= 5
    after(delay) { queue_retry }
  else
    mark_as_failed
  end 
end