Sinatraのエラーハンドラはdevelopment環境(デフォルト)では動作しない
タグ: sinatra / 初版公開: 2014-04-29

Sinatraでは例外発生時にエラー画面を表示するためのエラーハンドラerrorが用意されている。これにより以下のようなエラーハンドリングが可能である。

error do
  # すべての例外を捕捉
end

error MyException do
  # MyException例外を捕捉
end

error 403
  # ステータスコード403を捕捉
end

ただし、注意点としてdevelopment環境(デフォルト)では、Sinatraのエラー画面が出てきてしまい、これらのエラーハンドラは動作しない。エラーハンドラを期待通り動作させるには、Sinatraの環境を設定してやる必要がある。環境を設定するには以下3つの方法がある。

環境変数

RACK_ENV環境変数にproductionを設定してSinatraアプリケーションを起動することで環境を設定することができる。

RACK_ENV=production rackup

config.ru

config.rusetを使って:environment:productionにすることで環境を設定することができる。

set :environment, :production

アプリケーション

config.ruと同様にアプリケーション内でsetを使うことで環境を設定することができる。

set :environment, :production