Sinatraのエラーハンドリング
http://www.sinatrarb.com/intro.html#Error%20Handling
こちらを見ると例外はRackオブジェクトのsinatra.errorに入っているとあるが、ブロック引数としても受け取ることができる。
(バージョン1.4.4で確認)
require "sinatra" # developmentモードでもデバッグ表示させない set :show_exceptions, false # ブロック引数で例外オブジェクトを受け取る error do |e| status 500 # これでもできるけど #body env['sinatra.error'].message # これでもよい body e.message end get "/hoge" do raise "hoge" end
$ bundle exec ruby app.rb $ curl localhost:4567/hoge hoge