Sha256: d7df3ef70583d2b3b2465883cf7d1841013c326e062fbf0123176963aff58a35

Contents?: true

Size: 1.74 KB

Versions: 9

Compression:

Stored size: 1.74 KB

Contents

require 'honeybadger/plugin'

module Honeybadger
  module Plugins
    module Rails
      module ExceptionsCatcher
        def self.included(base)
          base.send(:alias_method, :render_exception_without_honeybadger, :render_exception)
          base.send(:alias_method, :render_exception, :render_exception_with_honeybadger)
        end

        # Internal: Adds additional Honeybadger info to Request env when an
        # exception is rendered in Rails' middleware.
        #
        # arg       - The Rack env Hash in Rails 3.0-4.2. After Rails 5 arg is
        #             an ActionDispatch::Request.
        # exception - The Exception which was rescued.
        #
        # Returns the super value of the middleware's #render_exception()
        # method.
        def render_exception_with_honeybadger(arg, exception)
          if arg.kind_of?(::ActionDispatch::Request)
            request = arg
            env = request.env
          else
            request = ::Rack::Request.new(arg)
            env = arg
          end

          env['honeybadger.exception'] = exception
          env['honeybadger.request.url'] = request.url rescue nil

          render_exception_without_honeybadger(arg, exception)
        end
      end

      Plugin.register :rails_exceptions_catcher do
        requirement { defined?(::Rails) }

        execution do
          require 'rack/request'
          if defined?(::ActionDispatch::DebugExceptions)
            # Rails 3.2.x+
            ::ActionDispatch::DebugExceptions.send(:include, ExceptionsCatcher)
          elsif defined?(::ActionDispatch::ShowExceptions)
            # Rails 3.0.x and 3.1.x
            ::ActionDispatch::ShowExceptions.send(:include, ExceptionsCatcher)
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
honeybadger-3.0.2 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.1 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta6 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta5 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta4 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta3 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta2 lib/honeybadger/plugins/rails.rb
honeybadger-3.0.0.beta1 lib/honeybadger/plugins/rails.rb