CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
Railsアプリケーションに限らずWebアプリケーションを開発する際、エラーが発生したり、意図している挙動と違ったりとデバッグを行う場面は多いですよね。ですが多くのプログラムからなるWebアプリケーションの場合、そのデバッグを行うのも一苦労です。
今回はそんなデバッグに役立つツールを2つご紹介します(*1)。
1つ目は「Better Errors」(*2)です。
Railsを使ったことがある方なら誰しもが一度は目にしたことがあるエラー画面。とてもシンプルな作りになっています。
エラークラスやメッセージ、バックトレースなどの情報が表示されていますが、実際にエラー原因を特定するためには少し物足りなさも感じます。
「Better Errors」はそんなエラー画面を見やすく、かつ便利にしてくれるツールです。インストール方法は以下を「/Gemfile」に記載して、「bundle install」を実行します。
group :development do gem 'better_errors' # Better Errors本体 gem 'binding_of_caller' # Better Errors上でREPLを使用するためのgem end
インストールが完了したら、早速先ほどのエラー画面を見てみましょう。標準ではシンプルだった画面が綺麗に色付されて見やすくなっています。
簡単に画面の構成を説明します。
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のコマンドが利用可能になっていますね。
もう1つのツールは「Rails Footnotes」(*4)です。このツールはデバッグの手助けとなる情報を画面上に表示してくれます。
実際に使っていただいた方が分かりやすいと思いますので、まずはインストールしてみましょう。以下を「/Gemfile」に記載して、「bundle install」を実行します。
group :development do gem 'rails-footnotes' end
インストール後、以下のコマンドで必要なファイルを生成します。
rails g rails_footnotes:install
生成が完了したら、「rails s」コマンドでサーバを起動し画面を見てみましょう。画面下部にリンクが表示されているのが分かるかと思います(*5)。
これらのリンクをクリックすると、そのリンクタイトルに応じた情報を表示することができます。筆者が個人的によく使うものをいくつかご紹介します。
Assigns
画面に渡されているインスタンス変数を表示します。
Routes
画面を表示しているコントローラのRoute情報を表示します。
Queries
発行されたSQLを表示します。TraceリンクをクリックするとそのSQLが発行された箇所(トレース情報)を表示することができます。
この「Rails Footnotes」を使えば、わざわざプログラム中にpメソッドを仕込んだり、ログファイルを確認したりせずとも、手軽にデバッグができそうですね。
簡単ではありましたが、デバッグに役立つ2つのツールをご紹介してきました。説明の中では割愛していますが、2つのツールとも画面上から実際のソースコードを見る機能が備わっています。ですがこの機能を使用するためには各環境(OS)に応じた設定が必要となっていますのでご注意ください(*6)。
こうしたツールを活用して、デバッグより手軽に、開発をより楽しくしていきたいですね。
それでは、Enjoy Ruby!
*1:動作確認は「Ruby1.9.3」、「Rails3.2.8」で行っています。
*2:https://github.com/charliesome/better_errors
*3:詳しくは第3回「Pry ~IRBをより見やすく、より便利に~」をご覧ください。
*4:https://github.com/josevalim/rails-footnotes
*5:デフォルトではdevelopmentモードのみでの表示となっているため、developmentモードで起動してください。
*6:デフォルトでは「txmt://」で始まるURLスキームにソースコードを表示するアプリケーションを関連付ける必要があります(URLスキームを変更することも可能)。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes