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.2'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#current_exceptionObject

Returns the value of attribute current_exception.



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

def current_exception
  @current_exception
end

#retry_attemptObject



106
107
108
# File 'lib/active_job/retriable.rb', line 106

def retry_attempt
  @retry_attempt ||= 0
end

Class Method Details



32
33
34
# File 'lib/active_job/retriable.rb', line 32

def self.print_exception_backtraces_to_stderr?
  @print_exception_backtraces_to_stderr
end


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

def self.print_exceptions_to_stderr=(option)
  @print_exceptions_to_stderr = !!option
  @print_exception_backtraces_to_stderr = option == :backtrace
end


28
29
30
# File 'lib/active_job/retriable.rb', line 28

def self.print_exceptions_to_stderr?
  @print_exceptions_to_stderr
end

.reraise_when_retry_exhausted=(option) ⇒ Object



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

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

.reraise_when_retry_exhausted?Boolean



24
25
26
# File 'lib/active_job/retriable.rb', line 24

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



116
117
118
119
120
# File 'lib/active_job/retriable.rb', line 116

def deserialize(job_data)
  super job_data

  self.retry_attempt = job_data['retry_attempt']
end

#retries_exhausted?Boolean



98
99
100
# File 'lib/active_job/retriable.rb', line 98

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

#retry_delayObject



102
103
104
# File 'lib/active_job/retriable.rb', line 102

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

#serializeObject



110
111
112
# File 'lib/active_job/retriable.rb', line 110

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