module Sidekiq::Rescue::DSL::ClassMethods
def sidekiq_rescue(error, delay: nil, limit: nil)
-
(ArgumentError)
- if limit is not an Integer -
(ArgumentError)
- if delay is not an Integer or Float -
(ArgumentError)
- if error is not an array of StandardError -
(ArgumentError)
- if error is not a StandardError
Returns:
-
(void)
-
Parameters:
-
limit
(Integer
) -- The maximum number of retries. -
delay
(Integer
) -- The delay in seconds before retrying the job. -
error
(Array
) -- The error classes to rescue. -
error
(StandardError
) -- The error class to rescue.
def sidekiq_rescue(error, delay: nil, limit: nil) validate_error_argument(error) validate_delay_argument(delay) validate_limit_argument(limit) self.sidekiq_rescue_options = { error: error, delay: delay || Sidekiq::Rescue.config.delay, limit: limit || Sidekiq::Rescue.config.limit } end
def validate_delay_argument(delay)
def validate_delay_argument(delay) return unless delay && !delay.is_a?(Integer) && !delay.is_a?(Float) raise ArgumentError, "delay must be integer or float" end
def validate_error_argument(error)
def validate_error_argument(error) error_arg_valid = if error.is_a?(Array) error.all? { |e| e < StandardError } else error < StandardError end return if error_arg_valid raise ArgumentError, "error must be an ancestor of StandardError or an array of ancestors of StandardError" end
def validate_limit_argument(limit)
def validate_limit_argument(limit) raise ArgumentError, "limit must be integer" if limit && !limit.is_a?(Integer) end