エラーページのカスタマイズが可能になりました

320 views
Skip to first unread message

Junya Ogura

unread,
Dec 22, 2010, 2:19:37 AM12/22/10
to heroku-ja
おぐらです。

「このした でんき あぶない!」でおなじみの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

Reply all
Reply to author
Forward
0 new messages