Class: R4r::RetryPolicy Abstract

Inherits:
Object
  • Object
show all
Defined in:
lib/r4r/retry_policy.rb

Overview

This class is abstract.

Pluggable retry strategy.

Direct Known Subclasses

InstanceOfRetryPolicy

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.alwaysR4r::RetryPolicy

Creates a policy that always recover from any kind of errors.

Returns:



20
21
22
# File 'lib/r4r/retry_policy.rb', line 20

def self.always
  ->(error:, num_retry:) { true }
end

.instance_of(*klass) ⇒ R4r::RetryPolicy

Creates a policy that recover from specified kind of errors

Examples:

R4r::RetryPolicy.instance_of(Some::Error, Service::Error)

Returns:



37
38
39
# File 'lib/r4r/retry_policy.rb', line 37

def self.instance_of(*klass)
  R4r::InstanceOfRetryPolicy.new(klass: klass)
end

.neverR4r::RetryPolicy

Creates a policy that never recover from any kind of errors.

Returns:



27
28
29
# File 'lib/r4r/retry_policy.rb', line 27

def self.never
  ->(error:, num_retry:) { false }
end

Instance Method Details

#call(error:, num_retry:) ⇒ Boolean

Check that given error can be retried or not.

Parameters:

  • error (Exception)

    an error was occured

  • num_retry (Fixnum)

    a number of current retry, started from zero

Returns:

  • (Boolean)

    true if retry can be recovered

Raises:

  • (NotImplementedError)


13
14
15
# File 'lib/r4r/retry_policy.rb', line 13

def call(error:, num_retry:)
  raise NotImplementedError
end