Sha256: b2b436cb6f9e17977669d980b6f7fdb857f2177267e887c252f23288624ec7e6
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
# frozen_string_literal: true module Apress module Api module Callbacks class BaseCallback include Interactor def self.retry_exceptions @retry_exceptions ||= Set.new end def self.repeat_exceptions @repeat_exceptions ||= Set.new end def self.add_retry_exceptions(*errors) retry_exceptions.merge(errors) end def self.add_repeat_exceptions(*errors) repeat_exceptions.merge(errors) retry_exceptions.merge(errors) end def self.inherited(other) other.around do |interactor| begin interactor.call rescue Exception => error if self.class.repeat_exceptions.any? { |ex| ex === error } raise Apress::Api::Callbacks::RepeatCallbackError.new(error.message, error.backtrace) elsif self.class.retry_exceptions.any? { |ex| error.is_a?(Class) && ex >= error || ex === error } raise Apress::Api::Callbacks::FireCallbackError.new(error.message, error.backtrace) else raise error end end end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
apress-api-1.24.2 | app/interactors/apress/api/callbacks/base_callback.rb |