#ruby
#pry

使えるpryコマンド

今まで、next,step,exit,finish,continueコマンド打って、変数の値や、返り値などを確認するぐらいしか使ってなったので、他に便利のコマンド、方法がないか調べてみた。

エイリアス

案外打つのめんどくさかったりするので

~/.pryrc
if defined?(PryByebug)
  Pry.commands.alias_command 's', 'step'
  Pry.commands.alias_command 'n', 'next'
  Pry.commands.alias_command 'f', 'finish'
  Pry.commands.alias_command 'c', 'continue'
  Pry.commands.alias_command 'w', 'whereami'
end

editコマンド

edit [method名] or [class名] or [ファイル名]
指定したメソッドなどが、編集できる。リアルタイムでコードを編集したい場合便利かも。編集後自動でリロードされる。変更した値が読み込まれる。

~/.pryrc
Pry.config.editor="subl"
# Pry.config.editor="vim"

このように書いとくと、editで立ち上がるエディターを自由に決められる。
sublimeの場合、編集が終わったら、ファイルを閉じないと、pryの待ち状態が続く。
また現在いるメソッドを編集しようとすると、編集してもうまく読み込みされない。
なんでだろう。。

ループの上のpry

繰り返し処理の中にpryを仕込んだ時、
何をやってもループが抜けられない場合がある。exit!などで抜けられるが
スクレイパー実行時にやっちゃうと、次同期する時、めんどくさいのでやらないほうがよい。

!!!

これやると同期がリセットされて、何事もなかったかのようにpryを終了させられる。

binding.pry unless @stop
で仕込んで、@stop = true とやって、exitやcontinueなどすると抜けられる。
これは、2つ以上pry仕込んだ時に、ループは抜けたいんだけど、pry自体は終わらせたくない時には使えそう。

show-method とか whereami

show-method メソッド名
この行、まだ実行したくないんだけど、どういうメソッドなのか見たい時に便利。
stepとかやっちゃうと処理が進んでしまうので。
whereami
は、でかい配列とかをpryで出力させた場合に、今コード上のどこに居たんだっけってなるのでwheremiで周辺のコードを再出力。

show-trace

stack-traceがたどれて、frame 行番号でそこにジャンプできるらしいが、
現CFO-alpha(10/13)では、できなかった。

cd,lsコマンド

いまいち使い所がまだわからない