我无法通知honeybadger

时间:2016-11-03 09:48:13

标签: ruby ruby-on-rails-4 sinatra

我尝试将我的rails应用程序中的Grape API异常通知给honeybadger,但它没有用。

# api_error_handler.rb
module API
  module V1
    module Config
      class ApiErrorHandler < Grape::Middleware::Base
        def call!(env)
          @env = env
          begin
            @app.call(@env)
          rescue StandardError => e
            Honeybadger.notify(e)
          end
        end
      end
    end
  end
end


# In defaults.rb
module API
  module V1
    module Defaults
      extend ActiveSupport::Concern

      included do
        error_formatter :json, API::V1::Config::ErrorFormatter
        rescue_from     :all, backtrace: true
        use API::V1::Config::ApiErrorHandler

        helpers do
          def authenticate_user!
              ...
          end
        end
      end
    .....
    end
  end
end

我在每个特定的api中都包含了defaults.rb。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

异常从未传播到API::V1::Config::ApiErrorHandler,因为它们被rescue_from :all, backtrace: true吞没。

您可以在rescue_from块中进行自己的异常处理。

rescue_from :all do |e|
  Honeybadger.notify(e)

  # Error still formatted with error_formatter
  # message, status, headers, backtrace
  error! e.message, 500, {}, e.backtrace
end

来源: