入れ子構造でpryを起動するというよりも、見える範囲(スコープ)を切り替えると考えると良いのではないかと思います。ようするに利便性のためではないでしょうか。(そういう意味では、引数を指定せずに内部pryを起動する必要性については自分もわかりません)
なお標準添付のirbでも同じような仕組みがあります。
以下のように、pryの引数で与えたオブジェクトが新しいselfになります。
以下はスコープを切り替えたことにより、インスタンス変数に直接アクセスできるようになったという例です。
sh
1$ pry
2[1] pry(main)> self
3=> main
4[2] pry(main)> class Aaa; def initialize; @attr = '123'; end end
5=> :initialize
6[3] pry(main)> aaa = Aaa.new
7=> #<Aaa:0x86ab050 @attr="123">
8[4] pry(main)> aaa.instance_variable_get :@attr
9=> "123"
10[5] pry(main)> pry aaa
11[1] pry(#<Aaa>)> self
12=> #<Aaa:0x86ab050 @attr="123">
13[2] pry(#<Aaa>)> @attr
14=> "123"
15[3] pry(#<Aaa>)> exit
16=> nil
17[6] pry(main)> exit
以下はprivateなメソッドも呼び出せるようになったという例です。
sh
1$ pry
2[1] pry(main)> class Bbb; private def test; puts '123' end end
3=> Bbb
4[2] pry(main)> bbb = Bbb.new
5=> #<Bbb:0x86a464c>
6[3] pry(main)> bbb.test
7NoMethodError: private method `test' called for #<Bbb:0x86a464c>
8from (pry):3:in `__pry__'
9[4] pry(main)> pry bbb
10[1] pry(#<Bbb>)> test
11123
12=> nil
13[2] pry(#<Bbb>)> exit
14=> nil
15[5] pry(main)> exit
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/21 22:06