Rails4に間に合うか、REPL付きエラー画面「Better Errors」がイイ感じ

2日ほど前にGitHubに登場して話題となっているRackアプリケーション向けエラー画面表示ツールの「better_errors」というgemがヨサゲなので、ちょっと試してみました。Rack対応なので、Sinatraでも使えるようですが、もちろん、Ruby on Rails対応です。間に合えば、Ruby on Rails4に採用されることもあるかもしれません。というぐらい、こういうのを待っていましたという声が出ているようです。

スタックトレースとエラー発生箇所が表示されるのは、Rails標準のエラー画面と同じですが、コードがハイライトされているほか、スタックフレームの任意の場所をクリックすると、該当するコードが表示されるなど、簡易なWebアプリっぽくなっています。インスタンス変数や、パーシャルに渡っているローカル変数も表示します。

以下はRails標準のエラー画面です。

Normal_error

Better Errorsを入れると、以下のようにカラフルに。左のスタックフレームをクリックすると、右側は該当箇所のコード、関連情報の表示に切り替わります。

Better_error

極めつけは、ブラウザ上でREPLを起動してくれて、その場でコンソールが使える機能です。Common Lispのような動的な環境でコードを書く人だと当然なのかもしれませんが、動いているコードに入っていける感じはいいです。Pryを使ったデバッグ環境で似たようなことはできますが、こういうのって標準で入っていてほしい機能ではないかと思います。最近はzeusのようにrailsコマンドの起動を高速化するようなツールがあったりしますが、エラー画面を見て、そこから rails c などとしてコンソールを起動するのってめんどくさいですよね。

Repl

Hacker Newsで話題となっていますが、PHPのSymphonyやPythonのFlaskには似たような仕組みがあるようですね。逆に、Railsでは意外にエラー画面が素朴なまま放置されていたということでしょうか。

ちなみに気になって調べてみたのですが、Better Errors作者のCharlie Somervilleさんは、オーストラリア出身の18歳の開発者のようです。これまでに開発したオープンソースのプロジェクトのリストを見てみると、ブラウザで各種言語が実行できる eval.in や、大半をJavaScriptとCoffeeScriptで実装したOS、「JSOS」、Rubyで実装したJavaScript処理系の「twostroke」、イベント駆動I/Oの抽象化ライブラリの libuv と Node.js のHTTPパーサを流用したRuby向けのWebサーバ「Racer」など、とても18歳と思えない多産さです。広く受け入れられるプロジェクトという意味では、今回のBetter Errorsが出世作になるのかもしれませんが、すごい若者が出てくるものですね。

前の記事| 全コラム一覧へ |次の記事

コメント

投稿する

エンジニアライフ 最新の投稿コラム

@IT自分戦略研究所フォーラム 新着記事

コラムニスト プロフィール

西村賢
@IT編集部の西村賢がRuby/Rails関連を中心にブログしています。
Ruby on Rails情報の新コーナー「Rails Hub」をよろしく!

- PR -

イベントカレンダー

アクセスランキング

もっと見る