123456789_123456789_123456789_123456789_123456789_

Module: ActiveSupport::Notifications::FanoutIteration

Do not use. This module is for internal use only.

Instance Method Summary

Instance Method Details

#iterate_guarding_exceptions(collection, &block) (private)

[ GitHub ]

  
# File 'activesupport/lib/active_support/notifications/fanout.rb', line 20

def iterate_guarding_exceptions(collection, &block)
  case collection.size
  when 0
  when 1
    collection.each(&block)
  else
    exceptions = nil

    collection.each do |s|
      yield s
    rescue Exception => e
      exceptions ||= []
      exceptions << e
    end

    if exceptions
      exceptions = exceptions.flat_map do |exception|
        exception.is_a?(InstrumentationSubscriberError) ? exception.exceptions : [exception]
      end
      if exceptions.size == 1
        raise exceptions.first
      else
        raise InstrumentationSubscriberError.new(exceptions), cause: exceptions.first
      end
    end
  end

  collection
end