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の実行には大きく

  1. コンソールからpryコマンドで開始する
  2. コード中にブレークポイントを設定する

の2つの方法があります。以下、使い方を紹介していきます。

pryの基本的な使い方

pryコマンドを叩くとpry REPLが起動します(「1. コンソールからpryコマンドで開始する」)。

この中ではirbと同じようにRubyのコードを記述できます。

pryはデフォルトでシンタックスハイライトが有効化されており自動でインデントもされるため、ちょっとコードを書くだけでもirbより快適です。

con

pryとirbの比較(左: 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でソースコードやドキュメントを参照する方法を紹介します。