module MultipleDevicesLogger::IgnoreExceptions

Public Instance Methods

exception_ignored?(exception) click to toggle source
# File lib/multiple_devices_logger/ignore_exceptions.rb, line 7
def exception_ignored?(exception)
  return false unless exception.is_a?(Exception)
  ignored_exception_classes.any? { |klass| exception.is_a?(klass) } || ignored_exceptions_procs.any? { |proc| proc.call(exception) }
end
ignore_exceptions(*arguments, &block) click to toggle source
# File lib/multiple_devices_logger/ignore_exceptions.rb, line 12
def ignore_exceptions(*arguments, &block)
  @ignored_exception_class_names ||= []
  @ignored_exceptions_procs ||= []
  @ignored_exceptions_procs << Proc.new(&block) if block_given?
  [arguments].flatten.each do |argument|
    if argument.respond_to?(:call)
      @ignored_exceptions_procs << argument
    else
      klass = argument.is_a?(Class) ? argument : argument.to_s.presence.try(:constantize)
      raise("Invalid exception class: #{argument.inspect}") unless klass.is_a?(Class) && (klass == Exception || (klass < Exception))
      @ignored_exception_class_names << klass.name
    end
  end
  @ignored_exception_class_names.uniq!
  nil
end
ignored_exception_classes() click to toggle source
# File lib/multiple_devices_logger/ignore_exceptions.rb, line 29
def ignored_exception_classes
  (@ignored_exception_class_names || []).map(&:constantize)
end
ignored_exceptions_procs() click to toggle source
# File lib/multiple_devices_logger/ignore_exceptions.rb, line 33
def ignored_exceptions_procs
  @ignored_exceptions_procs || []
end