module AMA::Entity::Mapper::Mixin::SuppressionSupport
Special module with method for playing with error suppression
Public Instance Methods
successful(enumerator, error = StandardError, ctx = nil) { |*args| ... }
click to toggle source
Enumerates elements in enumerator, applying block to each one, returning result or suppressing specified error. If no element has succeeded, raises last error.
@param [Enumerator] enumerator @param [Class<? extends StandardError>] error @param [AMA::Entity::Mapper::Context] ctx
# File lib/ama-entity-mapper/mixin/suppression_support.rb, line 20 def successful(enumerator, error = StandardError, ctx = nil) suppressed = [] enumerator.each do |*args| begin return yield(*args) rescue error => e ctx.logger.debug("#{e.class} raised: #{e.message}") if ctx suppressed.push(e) end end compliance_error('Empty enumerator passed') if suppressed.empty? raise suppressed.last end