Sha256: 5ab1c6d3c1d2c42f38d74f990534487304700df6dd4db1df4f189277ab71b48f

Contents?: true

Size: 1.58 KB

Versions: 7

Compression:

Stored size: 1.58 KB

Contents

module Honeybadger
  module Rack
    # Middleware for Rack applications. Any errors raised by the upstream
    # application will be delivered to Honeybadger and re-raised.
    #
    # Synopsis:
    #
    #   require 'rack'
    #   require 'honeybadger'
    #
    #   Honeybadger.configure do |config|
    #     config.api_key = 'my_api_key'
    #   end
    #
    #   app = Rack::Builder.app do
    #     run lambda { |env| raise "Rack down" }
    #   end
    #
    #   use Honeybadger::Rack::ErrorNotifier
    #   run app
    #
    # Use a standard Honeybadger.configure call to configure your api key.
    class ErrorNotifier
      def initialize(app)
        @app = app
        Honeybadger.configuration.framework = "Rack: #{::Rack.release}"
      end

      def ignored_user_agent?(env)
        true if Honeybadger.
          configuration.
          ignore_user_agent.
          flatten.
          any? { |ua| ua === env['HTTP_USER_AGENT'] }
      end

      def notify_honeybadger(exception,env)
        Honeybadger.notify_or_ignore(exception, :rack_env => env) unless ignored_user_agent?(env)
      end

      def call(env)
        begin
          response = @app.call(env)
        rescue Exception => raised
          env['honeybadger.error_id'] = notify_honeybadger(raised, env)
          raise
        ensure
          Honeybadger.context.clear!
        end

        framework_exception = env['rack.exception'] || env['sinatra.error']
        if framework_exception
          env['honeybadger.error_id'] = notify_honeybadger(framework_exception, env)
        end

        response
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
honeybadger-1.15.3 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.15.2 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.15.1 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.15.0 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.14.0 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.12.0.beta3 lib/honeybadger/rack/error_notifier.rb
honeybadger-1.12.0.beta2 lib/honeybadger/rack/error_notifier.rb