class PartyFoul::Middleware

Public Class Methods

new(app) click to toggle source
# File lib/party_foul/middleware.rb, line 5
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/party_foul/middleware.rb, line 9
def call(env)
  @app.call(env)
rescue Exception => captured_exception
  if allow_handling?(captured_exception)
    PartyFoul::ExceptionHandler.handle(captured_exception, env)
  end
  raise captured_exception
end

Private Instance Methods

allow_handling?(captured_exception) click to toggle source
# File lib/party_foul/middleware.rb, line 20
def allow_handling?(captured_exception)
  !PartyFoul.blacklisted_exceptions.find do |blacklisted_exception|
    names = blacklisted_exception.split('::')
    names.shift if names.empty? || names.first.empty?

    constant = Object
    names.each do |name|
      constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
    end

    constant === captured_exception
  end
end