RailsでつくったAPIのエラー処理

RailsでAPIを作ったとき、StandardErrorをどのように処理するのがいいのかと考えた。
やりたいことは、エラーの内容をjsonで返し、なおかつエラーのstatus codeも返却したいという感じ。

エラー内容は普通にrescueしてexception.messageを返してあげるといいが、statusはどうするか。
そこでどこかでエラーのリストを保持しているのではないかとで調べると、ActionDispatch::ExceptionWrapperにあるっぽいことがわかった。

これを上手こと利用して動的にエラーをレスポンスを生成したらどうだろうかということで、以下のようにしてみた。

とすると、standard errorの処理はできそう。
しかし、ExceptionNotifierなどをつかっていると、エラーを通知できないのでは?ということを
教えてもらったので、最終的に

という形で、ExceptionNotifierでも拾えるようにした。

この場合、全てのエラーを通知してしまうので、必要になエラーだけ拾うようにしたらいいのかも。

参考にしたページ: 2014-03-22: さんがつにじゅうににち: kosenconf-080tokyo

Comments