Module: ActiveJob::Retriable

Extended by:
ActiveSupport::Concern
Includes:
ActiveSupport::Callbacks
Defined in:
lib/active_job/retriable.rb,
lib/active_job/retriable/version.rb,
lib/active_job/retriable/test_helper.rb,
lib/active_job/retriable/test_adapater.rb

Defined Under Namespace

Modules: ClassMethods, TestHelper Classes: TestAdapter

Constant Summary collapse

BASE_TAG =
self.name
DEFAULT_FACTOR =
4
DEFAULT_MAX =
25
VERSION =
'5.0.0'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#current_exceptionObject

Returns the value of attribute current_exception.



75
76
77
# File 'lib/active_job/retriable.rb', line 75

def current_exception
  @current_exception
end

#retry_attemptObject



85
86
87
# File 'lib/active_job/retriable.rb', line 85

def retry_attempt
  @retry_attempt ||= 0
end

Class Method Details

.reraise_when_retry_exhausted=(option) ⇒ Object



14
15
16
# File 'lib/active_job/retriable.rb', line 14

def self.reraise_when_retry_exhausted=(option)
  @reraise_when_retry_exhausted = !!option
end

.reraise_when_retry_exhausted?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/active_job/retriable.rb', line 18

def self.reraise_when_retry_exhausted?
  @reraise_when_retry_exhausted
end

Instance Method Details

#deserialize(job_data) ⇒ Object

Rails 5 deserialization approach NOTE the conditional will be removed with Rails 5



95
96
97
98
99
# File 'lib/active_job/retriable.rb', line 95

def deserialize(job_data)
  super job_data

  self.retry_attempt = job_data['retry_attempt']
end

#retries_exhausted?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/active_job/retriable.rb', line 77

def retries_exhausted?
  retry_attempt >= (self.class.retry_max || DEFAULT_MAX)
end

#retry_delayObject



81
82
83
# File 'lib/active_job/retriable.rb', line 81

def retry_delay
  (retry_attempt ** DEFAULT_FACTOR) + (rand(30) * retry_attempt)
end

#serializeObject



89
90
91
# File 'lib/active_job/retriable.rb', line 89

def serialize
  super.update 'retry_attempt' => retry_attempt
end