「このした でんき あぶない!」でおなじみのHerokuのエラーページですが、
今回エラーハンドリングの方法が新しくなって、ベータ版としての提供が始まりましたね。
A New Approach to Errors
http://blog.heroku.com/archives/2010/12/21/a_new_approach_to_errors/
詳細は上記のブログにもありますが、参考までに簡単に要点をまとめてみました。
今回発表されたのは以下の4点。
1. Consolidated error page
これまで"backlog too deep"や"request timed out"といった開発者向けの
情報が表示されていたエラーページを、アプリケーションエラーとして一律で
同じページを表示するものです。ステータスコードは常に503となります。
エラーページのサンプル
http://s3.amazonaws.com/heroku_pages/error.html
2. 詳細なエラーコードのロギング
エラーページに詳細が表示されなくなるため、エラーの理由はアプリケーション
ログに記録されるようになります(要Loggingアドオン)。
エラー種別毎にユニークなコードがアサインされており、以下のように記録されます。
18:05:10 heroku[router]: Error H12 (Request timeout) -> GET
myapp.heroku.com/errortest dyno=web.1 queue=0 wait=0ms service=30000ms
bytes=0
エラーコード一覧は以下にあります。将来的にはこの他にも、デプロイ中の
エラーなども記録されるようにしていく計画のようです。
http://docs.heroku.com/error-codes
3. Custom Erro Pagesアドオン
標準のエラーページのデザインをサイトに合わせてカスタマイズしたい場合に
このアドオンを使います。
以下のようにしてエラーページとメンテナンスページのURLを指定できます。
$ heroku addons:add custom_error_pages
Adding custom_error_pages to myapp...done.
$ heroku config:add ERROR_PAGE_URL=http://s3.amazonaws.com/bucket/error.html
$ heroku config:add
MAINTENANCE_PAGE_URL=http://s3.amazonaws.com/bucket/maintenance.html
動作確認は以下を参考に。
http://docs.heroku.com/custom-error-pages
4. メンテナンスモードの改善
50を超えるDynoを使うようなアプリケーションではメンテナンスモードの
切り替えが瞬時に完了しない問題があり、これを、Dynoよりも前のHTTP
ルーターで処理することで改善するものです。
標準ではステータスコード503で、
http://s3.amazonaws.com/heroku_pages/maintenance.html
が返されるようになります。
ページをカスタマイズするには、Custom Error Pagesアドオンを使います。
ベータ期間の間は、Custom Error Pagesアドオンを有効にすることでそれ以外の
3つの機能も有効となります。
ベータ期間が終了した後は、Custom Error Pagesアドオン以外はすべてデフォルトで
有効になり、Custom Error Pagesアドオンについては有料での提供になるようです。
--
Junya Ogura <junya...@gmail.com>
http://twitter.com/junya