RubyのREPLはpry
を使っています。
pryを使うことでshow-source
というコマンドを使えるようになります。このコマンドを使うとRuby本体のコードではないコードに限りすぐに参照できるというものです。
$ pry
[1] pry(main)> show-source Pry
From: /Users/hiromasa/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/pry-0.9.12.6/lib/pry/pry_instance.rb @ line 24:
Class name: Pry
Number of monkeypatches: 8. Use the `-a` option to display all available monkeypatches
Number of lines: 742
class Pry
attr_accessor :input
attr_accessor :output
attr_accessor :commands
とまあこんな具合。
これでもかなり便利なんですが、関連してその周辺のファイルのコードを読むことも多いので実行環境でページャで読めるだけでは足りない場合もあります。
そこで!
show-sourceを参考にちょっと作ってやるか!と思っていろいろ中身を見ていたら、どうやらそんなことは普通にできるみたいですね(´・ω・`)
エディタを設定する
~/.pryrc
でエディターを設定しておきます。デフォルトではvimなのでそのまま環境内で開きます。僕はSublime Text3を使うため、subl
を指定しました。
# ~/.pryrc
Pry.config.editor = "subl"☄
editコマンドを使う
Pryのエディタでソースコードを開くにはedit
コマンドを使います。
$ pry
[1] pry(main)> edit Pry
おっと、Pryが待ち状態になってしまいました。これはSublimeから処理が返ってくるのを待っているという意味です。これにより、気になるファイルをコマンドで開いて編集を完了し、Pryに処理が戻った時点で該当ファイルを自動でリロードする(デフォルトの挙動)ような流れでコードを書くことができるようです。かっこいい。
けど、じっくり周辺のコードを読みたい場合は処理待ちになってほしくありません。そういうときは--no-reload
オプション(または-n
)をつけることでエディタで開いたらお終いな挙動をさせることができます。
RailsなんかではPryで色々やりながら動きを確認したりするので、show-source
やedit -n
でさらに捗りますね。もっと早く知りたかったわ。。。。