module Resque::Pertry::Retry::ClassMethods

Public Instance Methods

around_perform_pertry_00_retry(args = {}) { || ... } click to toggle source

Resque around_perform hook

# File lib/resque/pertry/retry.rb, line 90
def around_perform_pertry_00_retry(args = {})
  ResquePertryPersistence.trying_job(self, args)

  yield
end
on_failure_pertry_00_retry(exception, args = {}) click to toggle source

Resque on_failure hook (job failed)

# File lib/resque/pertry/retry.rb, line 97
def on_failure_pertry_00_retry(exception, args = {})
  return unless retryable?

  ResquePertryPersistence.with_job(self, args) do |job_model|
    job = instance(args)

    unless job.retry!(job_model, exception)
      ResquePertryPersistence.fail_job(self, args)
    end
  end
end
reset_retry_properties() click to toggle source

Quickly reset all retry properties Useful if you have a base job class

# File lib/resque/pertry/retry.rb, line 74
def reset_retry_properties
  self._retry_delays = nil
  self._retry_attempts = nil
  self._retry_delays = nil
  self._retry_ttl = nil
  self._retry_exceptions = nil
end
retry_attempts() click to toggle source
# File lib/resque/pertry/retry.rb, line 49
def retry_attempts
  self._retry_attempts
end
retry_delay() click to toggle source
# File lib/resque/pertry/retry.rb, line 28
def retry_delay
  self._retry_delay
end
retry_delays() click to toggle source
# File lib/resque/pertry/retry.rb, line 39
def retry_delays
  self._retry_delays
end
retry_exceptions() click to toggle source
# File lib/resque/pertry/retry.rb, line 68
def retry_exceptions
  self._retry_exceptions
end
retry_ttl() click to toggle source
# File lib/resque/pertry/retry.rb, line 58
def retry_ttl
  self._retry_ttl
end
retryable?() click to toggle source

Check if we will retry this job on failure There has to be a constraint on the number of times we will retry a failing job or have a ttl, otherwise we could be retrying job endlessly

# File lib/resque/pertry/retry.rb, line 85
def retryable?
  retry_attempts || retry_delays || retry_ttl
end
set_retry_attempts(count) click to toggle source

Sets the maximum number of times we will retry

# File lib/resque/pertry/retry.rb, line 44
def set_retry_attempts(count)
  self._retry_delays = nil
  self._retry_attempts = count == :clear ? nil : Integer(count)
end
set_retry_delay(delay) click to toggle source

Sets a number of seconds to wait before retrying

# File lib/resque/pertry/retry.rb, line 23
def set_retry_delay(delay)
  self._retry_delays = nil
  self._retry_delay = delay == :clear ? nil : Integer(delay)
end
set_retry_delays(*delays) click to toggle source

Sets a list of delays (list length will be the # of attempts)

# File lib/resque/pertry/retry.rb, line 33
def set_retry_delays(*delays)
  set_retry_attempts :clear
  set_retry_delay :clear
  self._retry_delays = Array(delays).map { |delay| Integer(delay) }
end
set_retry_exceptions(*exceptions) click to toggle source

Sets a list of exceptions that we want to retry If none are set, we will retry every exceptions

# File lib/resque/pertry/retry.rb, line 64
def set_retry_exceptions(*exceptions)
  self._retry_exceptions = Array(exceptions)
end
set_retry_ttl(ttl) click to toggle source

Sets the maximum time-to-live of the job, after which no attempts will ever be made

# File lib/resque/pertry/retry.rb, line 54
def set_retry_ttl(ttl)
  self._retry_ttl = ttl == :clear ? nil : Integer(ttl)
end