50
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby の 定番対話ツール pry 徹底攻略 | Normal Input #pry #ruby

Last updated at Posted at 2014-12-26

Ruby の 定番対話ツール pry 徹底攻略 | Normal Input

概要

Ruby の 定番対話ツール pry 徹底攻略
Normal Input について

How to Intput & Execute

Ruby のコードを入力しすると入力した内容を実行し、戻り値を標準出力します

例: 入力と実行

[2] pry(main)> 'hello, pry'
=> "hello, pry"
[3] pry(main)> [*1..5]
=> [1, 2, 3, 4, 5]
[4] pry(main)> [*1..5].reduce(&:+)
=> 15

Clear Input Buffer

メソッドやクラス定義など、複数行の記述をしている途中に
間違えてしまった場合は、 ! を利用すると通常の入力モードに戻ります。

入力途中に defdefa と入力してしまってキャンセルしたい場合は、
下記のようになります。

例: ! によるバッファクリア

[6] pry(main)> class Hoge
[6] pry(main)*   defa hoge
[6] pry(main)*   !
Input buffer cleared!

:mask: Suppress evaluation output

文末にセミコロン ( ; ) を付加すると、標準出力を抑止します。
出力が長くなり、抑止したい場合に便利です。

例: ; による標準出力抑止

[8] pry(main)> 'hoge'
=> "hoge"
[9] pry(main)> 'hige';

出力を抑止したが、後から出力内容を確認したい場合は、
変数 __out_ から確認可能です。
変数 _ は最後の実行結果。
変数 _out_ は履歴全体を Pry::HistoryArray クラスに保持しています

例: _, _out_

[12] pry(main)> 'hoge'
=> "hoge"
[13] pry(main)> 'hige';
[14] pry(main)> _
=> "hige"
[15] pry(main)> _out_
=> #<Pry::HistoryArray size=16 first=0 max_size=100>
[39] pry(main)> _out_.to_a.last
=> "hige"

:flashlight: Show the contents of the input buffer

show-input で入力バッファの内容を確認します。
長い複数行のコードを書いている際などに、内容を確認するのに便利です。

例: show-input

[43] pry(main)> class Hoge
[43] pry(main)*   def hoge
[43] pry(main)*     "hoge"
[43] pry(main)*     show-input
1: class Hoge
2:   def hoge
3:     "hoge"
[43] pry(main)*   end
[43] pry(main)* end
=> :hoge
[44] pry(main)> show-input

[45] pry(main)>

Amend lines of input

長い複数行のコードを書いている際などに、内容を修正したい場合、

amend line <line number> <fix code>

で修正することができます。
この際、行番号が必要になるため、前述の show-input を利用します。

例: amend-line

hoge メソッドを作るつもりが、 hige メソッドを定義してしまいました。
show-input で行番号を確認し、 amend-line で修正します。

[54] pry(main)> class Hoge
[54] pry(main)*   def hige
[54] pry(main)*     "hoge"
[54] pry(main)*     show-input
1: class Hoge
2:   def hige
3:     "hoge"
[54] pry(main)*     amend-line 2 def hoge
1: class Hoge
2:   def hoge
3:     "hoge"
[54] pry(main)*     end
[54] pry(main)*   end
=> :hoge
[55] pry(main)> Hoge.new.hoge
=> "hoge"

例: amend-line + ! でバッファ内の任意の行を削除

hoge メソッドだけでいいところを、 hige メソッドまで定義してしまったので、
amend-line <from>..<to> ! で該当行を削除します。

[61] pry(main)> class Hoge
[61] pry(main)*   def hoge
[61] pry(main)*     "hoge"
[61] pry(main)*   end
[61] pry(main)*
[61] pry(main)*   def hige
[61] pry(main)*     "hige"
[61] pry(main)*   end
[61] pry(main)*   show-input
1: class Hoge
2:   def hoge
3:     "hoge"
4:   end
5:
6:   def hige
7:     "hige"
8:   end
[61] pry(main)*   amend-line 6..8 !
1: class Hoge
2:   def hoge
3:     "hoge"
4:   end
5:
[61] pry(main)* end
=> :hoge
[62] pry(main)> show-source Hoge

From: (pry) @ line 54:
Class name: Hoge
Number of lines: 5

class Hoge
  def hoge
    "hoge"
  end
  end

Editing the contents of the input buffer with an editor

入力中のバッファをエディタで編集します。
エディタを変更したい場合は、

  • 実行中の場合は Pry.editor = 'xx'
  • 事前に設定するの場合は .pryrc に Pry.cofig.editor = "xx"

で設定します。

Replay history

履歴を再実行します。
hist で履歴を参照。 --tail オプションで最後から N 件を取得します。
--replay オプションで指定したコマンドを再実行します。

[8] pry(main)> :hoge
=> :hoge
[9] pry(main)> :hige
=> :hige
[10] pry(main)> :hage
=> :hage
[11] pry(main)> hist --tail 5
 6: hist
 7: hist --tail 2
 8: :hoge
 9: :hige
10: :hage
[12] pry(main)> hist --replay 8..10
=> :hoge
=> :hige
=> :hage
[16] pry(main)>

Play files and methods as input

play コマンドでファイルやメソッドを再生します。

検証用 play.rb ファイル

class Play
  def play
    puts "play1"
    puts "play2"
    puts "play3"
  end
end

ファイルの再生検証

# play.rb を読み込んで、 3 行目から 4 行目を再生します
[16] pry(main)> play play.rb -l 3..4
play1
play2
=> nil

メソッドの再生検証

Hoge クラスの hige メソッドの 3 行目 から実行します

[17] pry(main)> class Hoge
[17] pry(main)*   def hoge
[17] pry(main)*     "hoge"
[17] pry(main)*   end
[17] pry(main)*   def hige
[17] pry(main)*     p "hige1"
[17] pry(main)*     p "hige2"
[17] pry(main)*   end
[17] pry(main)* end
=> :hige
[19] pry(main)> show-source Hoge -l

From: (pry) @ line 17:
Class name: Hoge
Number of lines: 9

17: class Hoge
18:   def hoge
19:     "hoge"
20:   end
21:   def hige
22:     p "hige1"
23:     p "hige2"
24:   end
25: end
[21] pry(main)> play Hoge.new.hige -l 3
"hige2"
=> "hige2"

:man::woman: 親記事

Ruby の 定番対話ツール pry 徹底攻略

50
52
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
50
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?