Sha256: 07b68a328fccf1f84ce16e6212e4b862678ec3ce90bcbbedc35123bb0ddc5dcf

Contents?: true

Size: 1.37 KB

Versions: 21

Compression:

Stored size: 1.37 KB

Contents

module Honeybadger
  # 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
  #   run app
  #
  # Use a standard Honeybadger.configure call to configure your api key.
  class Rack
    def initialize(app)
      @app = app
    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

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
honeybadger-1.10.3 lib/honeybadger/rack.rb
honeybadger-1.10.2 lib/honeybadger/rack.rb
honeybadger-1.10.1 lib/honeybadger/rack.rb
honeybadger-1.10.0 lib/honeybadger/rack.rb
honeybadger-1.9.5 lib/honeybadger/rack.rb
honeybadger-1.10.0.beta2 lib/honeybadger/rack.rb
honeybadger-1.10.0.beta1 lib/honeybadger/rack.rb
honeybadger-1.9.4 lib/honeybadger/rack.rb
honeybadger-1.9.3 lib/honeybadger/rack.rb
honeybadger-1.9.2 lib/honeybadger/rack.rb
honeybadger-1.9.1 lib/honeybadger/rack.rb
honeybadger-1.9.0 lib/honeybadger/rack.rb
honeybadger-1.9.0.beta3 lib/honeybadger/rack.rb
honeybadger-1.9.0.beta2 lib/honeybadger/rack.rb
honeybadger-1.9.0.beta1 lib/honeybadger/rack.rb
honeybadger-1.8.1 lib/honeybadger/rack.rb
honeybadger-1.8.0 lib/honeybadger/rack.rb
honeybadger-1.7.0 lib/honeybadger/rack.rb
honeybadger-1.6.2 lib/honeybadger/rack.rb
honeybadger-1.6.1 lib/honeybadger/rack.rb