更新情報

こんにちは、トランスネットの泉です。既に Ruby on Railsコラムを書かせていただいていますが、併せてRubyコラムも書くこととなりました。
こちらのコラムDig Ruby!では、よりRubyという言語にフォーカスした内容や、Ruby on Rails以外のことなどについて徒然に書いていきたいと思います。

さて、第一回目は「pry watch」です。pryはirbの代替として対話的インタフェース(REPL:Read-eval-print loop とも呼ばれています)を利用できるGemです。既に多くの方が利用されていることでしょう。
Railsコラムの第一回目で簡単に紹介しましたが、こちらのコラムではもう少しだけpry について触れてみたいと思います。
また、最近追加された機能”watch”をご紹介します。

インストール

まだインストールされていない方、まずはインストールしましょう。
Gemとして公開されているので、以下のコマンドを実行するだけです。今回は2つのGemをインストールします。

$ gem install pry pry-doc

  • pry: pry本体
  • pry-doc: pryから直接ドキュメントやソースコードを確認できます

 

使ってみる

pryは以下のコマンドで起動できます。

$ pry

起動するとプロンプトが表示され、対話的にRubyコードを実行することができます。

2
実行結果は、読みやすくシンタックスハイライトされます。

Gistにサンプルコードdig_ruby.rbをご用意しました。こちらでpryを試してみましょう。

適当なところにファイルを配置し、pryを起動してrequireしてください。
3

pry-doc

$メソッドで、ソースコードを確認できます。
4

特定のメソッドの定義箇所のみを確認してみます。
5

binding.pry

binding.pryを利用すると、記述した箇所でpryプロンプトが表示されます。
ここで処理が停止するため、ブレークポイントとして利用することができます。

dig_ruby.rbの14行目付近に”binding.pry”と記述し、処理を止めてみましょう。
6

この状態で、DigRuby#digを実行します。
7

処理が止まることを確認できましたでしょうか。
停止時点のコンテキストを保持しており、このプロンプトから変数を直接参照することができます。
8

この状態からは、”quit”で抜けられます。

pry(pry-doc)について、ほんの入口部分をご紹介しました。
pryについてはまだまだ多くの便利な機能があり、沢山の参考になる資料が公開されています。
興味を持たれた方は、是非色々と調べて活用してみてください。

watch

さて、pryは6月9日(UTC-7)にv0.10.0がリリースされています。何が変わったのでしょうか。

CHANGELOGを読んでみます。

Added a watch command that lets you see how values change over time.

何やら新しいコマンド「watch」が追加されたようです。気になるので調べてみましょう。

pryの?メソッドを使用します。

9

他の言語のIDEなどでお馴染みのウォッチ式を使えそうです。早速試してみましょう。
※エラーが表示された場合、お使いのpryのバージョンが古い可能性があります。

DigRuby#digging_countは、DigRuby#digした回数を取得するメソッドです。
95
この値をwatchしてみます。

> watch digger.digging_count

10

どうやらwatchingしているようです。digしてみます。
11

digging_countが変化する度に、画面に表示されるようになりました。
獲得したRubyの数、DigRuby#rubyもwatchしてみましょう。

> watch digger.ruby

12

?メソッドによれば、式無しでwatchを実行すると、リストが得られるとありました。

-l, –list Show all current watch expressions and their values. Calling watch with no expressions or options will also show the watch expressions.

試してみます。

> watch

13_

現在watchしている式の一覧が表示されました。しばらくdigしてみます。
15

値に変化があった時のみ、表示されていることがわかります。

?メソッドによれば、watch対象を削除できるはずです。

-d, –delete Delete the watch expression with the given index. If no index is given; clear all watch expressions.

digging_countをwatch対象から削除してみます。
16

本当に削除されているか、確認してみます。
17

digging_countが表示されなくなりました。

CHANGELOGで発見したwatchコマンド、実際の開発中にも利用できそうですね:-)

まとめ

irbの代替Gem、pryについて簡単にご紹介しました。また、pryに新たに追加されたコマンド”watch”を試してみました。

Gemを一度インストールした後は特にバージョンアップせずにそのまま、あるいはバージョンアップしてもその内容は特に気にしない、といった方もいらっしゃるのではないでしょうか。
OSSの全ての更新を読むことは大変ですが、まずはCHANGELOGだけでも眺めてみましょう。
気になるところを見つけたら、そこから掘り下げていく。きっと新しい発見があると思います。

それでは今日はこの辺で。次回をお楽しみに♪