Module: Sidekiq::Rescue::Dsl::ClassMethods

Defined in:
lib/sidekiq/rescue/dsl.rb

Overview

Module containing the Dsl methods

Instance Method Summary collapse

Instance Method Details

#sidekiq_rescue(*errors, delay: Sidekiq::Rescue.config.delay, limit: Sidekiq::Rescue.config.limit, jitter: Sidekiq::Rescue.config.jitter, queue: nil) ⇒ void

This method returns an undefined value.

Configure rescue options for the job.

Examples:

sidekiq_rescue NetworkError, delay: 60, limit: 10

Parameters:

  • error (StandardError)

    The error class to rescue.

  • error (Array<StandardError>)

    The error classes to rescue.

  • delay (Integer, Float, Proc, Symbol) (defaults to: Sidekiq::Rescue.config.delay)

    The delay in seconds before retrying the job. Symbols like ‘:polynomially_longer` or `:exponentially_longer` are built-in delay strategies.

  • limit (Integer) (defaults to: Sidekiq::Rescue.config.limit)

    The maximum number of retries.

Raises:

  • (ArgumentError)

    if error is not a StandardError

  • (ArgumentError)

    if error is not an array of StandardError

  • (ArgumentError)

    if delay is not an Integer or Float

  • (ArgumentError)

    if limit is not an Integer

  • (ArgumentError)

    if jitter is not an Integer or Float

  • (ArgumentError)

    if queue is not a String



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/sidekiq/rescue/dsl.rb', line 32

def sidekiq_rescue(*errors, delay: Sidekiq::Rescue.config.delay, limit: Sidekiq::Rescue.config.limit,
                   jitter: Sidekiq::Rescue.config.jitter, queue: nil)
  unpacked_errors = validate_and_unpack_error_argument(errors)
  validate_delay_argument(delay)
  validate_limit_argument(limit)
  validate_jitter_argument(jitter)
  validate_queue_argument(queue)
  assign_sidekiq_rescue_options(
    errors: unpacked_errors, delay:, limit:, jitter:, queue:
  )
end

#sidekiq_rescue_error_group_with_options_by(exception) ⇒ Array<StandardError>, Hash

Find the error group and options for the given exception.

Parameters:

  • exception (StandardError)

    The exception to find the error group for.

Returns:

  • (Array<StandardError>, Hash)

    The error group and options.



47
48
49
50
51
# File 'lib/sidekiq/rescue/dsl.rb', line 47

def sidekiq_rescue_error_group_with_options_by(exception)
  sidekiq_rescue_options.reverse_each.find do |error_group, _options|
    Array(error_group).any? { |error_klass| exception.is_a?(error_klass) }
  end
end