我尝试将我的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。
感谢您的帮助!
答案 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
来源:
rescue_from :all
:Grape documentation error!
interface:Grape source