Railsでエラー時Jsonレスポンスを返す
目的
RailsをAPIとして使ってるが、何も設定しないと404や500時にHTMLが返ってくる。
そこをJson形式で返ってくる様にしたい。
404
【Rails】RoutingError時の処理を書く - Qiita
を参考に、下記の様な感じで書いて、application_controller.rb で例外を処理する。
match '*unmatched_route', :to => 'application#raise_not_found!', :via => :all
500
application_controller.rb に以下を追加
# 他のrescue_from よりも下に書くこと rescue_from StandardError, with: :handle_500 def handle_500(err) # StandardErrorをcatchしてしまうと、SentryのCatchができなくなるで、ここに追記 Raven.capture_exception(err) render json: { error: err.message }, status: :internal_server_error end
てな感じでやると、HTMLじゃなくて、Jsonが返ってくる