LoginSignup
124
124

More than 5 years have passed since last update.

pryを使った快適なRubyライブラリのコードリーディング&開発方法

Last updated at Posted at 2012-11-27

この記事はRuby開発環境 Advent Calendar / Jul.の1日目の記事です.参加は「7/1よりRuby開発環境アドベントカレンダーを開始します!」から!
7/2になってしまってごめんなさい.

tmuxによる縦分割,pryを使った快適,高速なコードリーディング&開発について書きます.
以下ではresqueのコードを読んだり,手を加えたりするという想定で話を進めます.

事前準備

それぞれのツールについては
pry: ググるよりもまずはpry - Qiita
tmux: tmuxタグページ
あたりを参考に.
以下,必要なものをインストールします.

gem install -r gem-browse pry pry-doc
cd /tmp
gem clone resque
cd resque
# tmuxを使って画面を縦半分に割る
# 左: vim -R lib/redis.rb
# 右: pry -Ilib

上記みたいな感じ.ここでpry -Ilibがポイントです.-Ilibすることでいま見ているresqueのソースを参照させます.

pryのedit, edit-methodをうまく使う

pry内でedit lib/resque.rb:50のように実行すると,lib/resque.rbの50行目にカーソルが移動した状態でエディタが立ち上がります.(ちなみにぼくはemacsclientを使ってます)
そこで適当に編集し,保存して戻ってくると変更が反映されているので,pryで実行すると挙動が変わっているのがわかると思います.

特定メソッドを編集したい場合はedit-method Resque#redisという形でも指定できます.便利!

binding.pry

実行時のローカル変数を見たいとき,毎回ソースにp @fooを入れて実行→結果を見てまたp @barを入れて実行,は面倒すぎる.そこでbinding.pryです.ブレークポイントを設定できます.
上記のeditedit-methodを使って目的の場所にbinding.pryを入れてメソッドを呼ぶと,binding.pryの行で実行が止まり,その行のスコープに入ってpryを開いてくれます.あとはローカル変数を覗くなりステップ実行するなりメソッドを呼ぶなりするなりお好きなように.
edit -cするとその行をエディタで開いてくれます.

まとめ

pry -Ilib
[1] pry(main)> edit lib/foo.rb:10
[2] pry(main)> edit-method Foo#bar
[3] pry(main)> …

文章による説明だとあまり便利さが伝わりにくいのですが,コードリーディング時にメソッドの挙動を確認したい,少し変更したいときなんかにはとても便利なので,一度試してみてください.

124
124
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
124
124