2016-11-03 8 views
0

私のレールアプリケーションでGrape APIからhoneybadgerに例外を通知しようとしましたが、動作しません。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

rescue_from :all, backtrace: trueで飲み込まれたため、例外がAPI::V1::Config::ApiErrorHandlerに伝播することはありません。

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 

出典:

+0

助けて幸せ@LuanD。この回答があなたの問題を解決した場合は、それを合格とマークしてください。 – timstott

関連する問題