pryについて
pryはRubyのREPL兼デバッガーです。Rubyには標準でirbというREPLが備わっていますが、後発のpryはより高機能で使いやすくなっています。例えば以下のような機能があります。
- REPL中からのソースコード参照, 編集
- cd, lsなどでコード中を移動する
- 標準でシンタックスハイライトが効いている
- pry REPL中で利用可能なコマンドを定義できる
本記事ではpryのインストール方法と簡単な使い方を紹介し、Railsアプリケーションのデバッグを行う方法も解説します。
pryのインストール
pryはgemで提供されており、gem install
コマンドでインストールできます。
このとき一緒にpry-docというgemも入れておきます。pryでは「Rubyで書かれた」ソースコードを参照することができますが、pry-docを入れておくと、それにくわえて「C言語で書かれた」Ruby自体のコードを読むことができます。
pryの実行には大きく
- コンソールからpryコマンドで開始する
- コード中にブレークポイントを設定する
の2つの方法があります。以下、使い方を紹介していきます。
pryの基本的な使い方
pry
コマンドを叩くとpry REPLが起動します(「1. コンソールからpryコマンドで開始する」)。
この中ではirbと同じようにRubyのコードを記述できます。
pryはデフォルトでシンタックスハイライトが有効化されており自動でインデントもされるため、ちょっとコードを書くだけでもirbより快適です。
Rubyコードの実行中はどこでも常にself
という変数が定義されています。selfはメソッド呼び出しの暗黙のレシーバであり、メソッド探索チェインのスタート地点でもあります。このselfを好きなオブジェクトに差し替え、コンテキストを移動していくのがpryのcd
コマンドです。
上の例を見てください。最初はmain
というpry REPLの階層にいますが、定義したローカル変数rectに対してcd rect
するとselfがRectangleクラスのインスタンスに差し替わります。
続いて実行するls
では、現在の位置で参照可能な変数、インスタンス変数、メソッドが一覧できます。参考までによく使うlsのオプションを以下にリストアップします。
- ls -i
<object:省略可>
: object, もしくはselfのインスタンス変数一覧 - ls -l
<object:省略可>
: object, もしくはselfのローカル変数一覧 - ls -c
<object:省略可>
: 現在のスコープでの定数一覧, もしくはobject(クラス)の下に定義された定数・クラス・モジュール - ls -M
<Clazz>
: クラスのpublicなインスタンスメソッド一覧 - --grep : ls結果をgrepで絞り込む
なおpry REPL中ではhelpも参照できるので、その他のオプションも見たければhelp ls
もしくはls --help
を実行してください。
次のページでは、pryでソースコードやドキュメントを参照する方法を紹介します。