Padrino (Sinatra) はerror
メソッドを使ってエラーハンドリングができる。
error
メソッドはステータスコード (Integer) か例外クラスを渡す。
class MyApp < Padrino::Application # ... error 404 do "404 Not Found" end error ActiveRecord::RecordNotFound do halt 404 end end
ちなみにPadrinoはエラー処理がもうちょっと柔軟にできて、コントローラのスコープごとにエラー処理を定義できる。
スコープというのはPadrino.controller
に渡す名前のこと。
MyApp.controller :posts do error 404 do "Post is not found" end end MyApp.controller :authors do error 404 do "Author is not found" end end
しかし、開発環境 (Padrino.env == :development) だとSinatra由来のリッチなスタックトレースを吐くようになっていて、このスタックトレースを見るオプション (show_exception) が有効だと、例外クラスを指定してエラーハンドリングが効かなくなる。切るとちゃんと動く。
class MyApp < Padrino::Application set :show_exception, true end