IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Ruby & Rails

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第4回 デバッグお役立ちツール『Better Errors / Rails Footnotes』 (松永紘) 2013年6月

 Railsアプリケーションに限らずWebアプリケーションを開発する際、エラーが発生したり、意図している挙動と違ったりとデバッグを行う場面は多いですよね。ですが多くのプログラムからなるWebアプリケーションの場合、そのデバッグを行うのも一苦労です。
 今回はそんなデバッグに役立つツールを2つご紹介します(*1)。

Better Errors

 1つ目は「Better Errors」(*2)です。
 Railsを使ったことがある方なら誰しもが一度は目にしたことがあるエラー画面。とてもシンプルな作りになっています。

fig01

 エラークラスやメッセージ、バックトレースなどの情報が表示されていますが、実際にエラー原因を特定するためには少し物足りなさも感じます。
「Better Errors」はそんなエラー画面を見やすく、かつ便利にしてくれるツールです。インストール方法は以下を「/Gemfile」に記載して、「bundle install」を実行します。

group :development do
  gem 'better_errors' # Better Errors本体
  gem 'binding_of_caller' # Better Errors上でREPLを使用するためのgem
end

 インストールが完了したら、早速先ほどのエラー画面を見てみましょう。標準ではシンプルだった画面が綺麗に色付されて見やすくなっています。

fig02

 簡単に画面の構成を説明します。

1. トレース情報
 エラー発生時のバックトレースが表示されます。各フレームをクリックすると右側の表示が該当フレームの物に切り替わります。フレームワークレベルの情報を表示することも可能です。

2. コード表示 / REPL
 該当フレームにおける実行箇所前後のソースコードが表示されます。また、該当コンテキスト上でのREPL(rails console)を利用することもできます。

3. コンテキスト情報
 リクエストの情報や該当フレームにおけるローカル変数、インスタンス変数の情報が表示されます。

 エラー原因を特定するための情報や機能が盛りだくさんで、まさに「かゆいところに手が届く」ツールとなっています。特にブラウザ上でREPLが利用でき、その場でちょっとした確認ができるのはありがたいですね。
 ですが、折角ならREPL上でPry(*3)のコマンドも実行したいところです。そこで、このREPLをPryで実行する方法をご紹介します。

「/config/initializers」以下に適当なRubyファイルを作成し、以下のコードを記載します。

BetterErrors.use_pry! if defined?(BetterErrors) && Rails.env.development?  

 サーバを再起動し、エラー画面を表示してみましょう。REPL上で「ls」や「cd」といったPryのコマンドが利用可能になっていますね。

Rails Footnotes

 もう1つのツールは「Rails Footnotes」(*4)です。このツールはデバッグの手助けとなる情報を画面上に表示してくれます。
 実際に使っていただいた方が分かりやすいと思いますので、まずはインストールしてみましょう。以下を「/Gemfile」に記載して、「bundle install」を実行します。

group :development do
  gem 'rails-footnotes'
end

 インストール後、以下のコマンドで必要なファイルを生成します。

rails g rails_footnotes:install  

 生成が完了したら、「rails s」コマンドでサーバを起動し画面を見てみましょう。画面下部にリンクが表示されているのが分かるかと思います(*5)。

fig03

 これらのリンクをクリックすると、そのリンクタイトルに応じた情報を表示することができます。筆者が個人的によく使うものをいくつかご紹介します。

Assigns
 画面に渡されているインスタンス変数を表示します。

Routes
 画面を表示しているコントローラのRoute情報を表示します。

Queries
 発行されたSQLを表示します。TraceリンクをクリックするとそのSQLが発行された箇所(トレース情報)を表示することができます。

 この「Rails Footnotes」を使えば、わざわざプログラム中にpメソッドを仕込んだり、ログファイルを確認したりせずとも、手軽にデバッグができそうですね。

 

 簡単ではありましたが、デバッグに役立つ2つのツールをご紹介してきました。説明の中では割愛していますが、2つのツールとも画面上から実際のソースコードを見る機能が備わっています。ですがこの機能を使用するためには各環境(OS)に応じた設定が必要となっていますのでご注意ください(*6)。

 こうしたツールを活用して、デバッグより手軽に、開発をより楽しくしていきたいですね。

 それでは、Enjoy Ruby!

注釈

*1:動作確認は「Ruby1.9.3」、「Rails3.2.8」で行っています。

*2https://github.com/charliesome/better_errors

*3:詳しくは第3回「Pry ~IRBをより見やすく、より便利に~」をご覧ください。

*4https://github.com/josevalim/rails-footnotes

*5:デフォルトではdevelopmentモードのみでの表示となっているため、developmentモードで起動してください。

*6:デフォルトでは「txmt://」で始まるURLスキームにソースコードを表示するアプリケーションを関連付ける必要があります(URLスキームを変更することも可能)。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート