ぴよログ

↓に移転したのでこっちは更新されません、多分。

Pryからソースコードをエディタで開く

移転しました →

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-sourceedit -nでさらに捗りますね。もっと早く知りたかったわ。。。。