LoginSignup
4
4

More than 5 years have passed since last update.

Railsでerrbitにカスタムエラーの通知

Last updated at Posted at 2015-10-28

動機

エラーが起きただけでなく、任意の箇所や、自前の情報を与えてエラー情報をerrbitに通知したい.

方法

Airbrake.notify(exception, opts = {})メソッドを呼ぶ.
第二引数にrequest.env['action_controller.instance'].airbrake_request_dataを指定するとrackからcallする情報と同様の情報を送信可能.

my_controller.rb

def action_in_my_controller
  begin
    MyException.new('An error occured')
  rescue MyException => e
    Airbrake.notify(e, request.env['action_controller.instance'].airbrake_request_data)
  end
end

適当に実装すると上のように書ける.

問題1

requestメソッドを使用するので、controller内でないと利用できないのがネック.

モデルや別のレイヤーからrequestを参照する方法は以下の記事が参考になった.

問題2

request.env['action_controller.instance'] がnilじゃないことを確認すること.
以下のようなメソッドを用意しておくと良い.


def airbrake_request(env)
  if env['action_controller.instance'].respond_to?(:airbrake_request_data)
    env['action_controller.instance'].airbrake_request_data
  else
    { rack_env: env }
  end
end
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4