私は "j doe"(元の質問はここにあります:How to step through a loop with pry and view the value of an iterator?)とまったく同じ質問をしていますが、質問は本当に答えられませんでした。私は実際にの人々に、デバッグのためにPryを使用してに質問して、ループに入り、ループが発生したときに式を評価する方法を説明します。PRYでループをステップ実行し、ターミナルセッションでイテレータの値を表示する方法はありますか?
私はマニュアルを読んだり、端末でヘルプファイルを確認したり、YouTubesを見ましたが、悲しいことに私はそれを手に入れません。私は偶然に "ループに入る"ことができたことが何回かありました。 私が持っているもの:
- 私は、単一のルビーファイルを使用して、私のシステムで
- 私が以前にインストールされている宝石
byebug (8.2.1, 3.5.1, 3.4.0)
を。pry (0.10.3, 0.10.1)
およびpry-rails (0.3.4, 0.3.2)
。 - スクリプトの先頭に
require 'pry'
があります。 - 私は、
binding.pry
を使用してブレークポイントを設定しています。
これは、私が付属の質問の例を使用してTerminalで行ったことです。私はこれまでのところ、私の次のステップは何ですか?どのように私は実際にループをステップして、私が見ている変数の値を参照して移動するには?
Last login: Thu Oct 20 18:21:07 on ttys000
INB:~ LearnEnough$ pry
[1] pry(main)> def longest_palindrome s
[1] pry(main)* max_palindrome_len = 0
[1] pry(main)* for i in (0..s.length)
[1] pry(main)* binding.pry
[1] pry(main)* for j in (i..s.length)
[1] pry(main)* binding.pry
[1] pry(main)* substr = s[i..j]
[1] pry(main)* if substr == substr.reverse && substr.length > max_palindrome_len
[1] pry(main)* max_palindrome_len = substr.length
[1] pry(main)* end
[1] pry(main)* end
[1] pry(main)* end
[1] pry(main)* return max_palindrome_len
[1] pry(main)* end
=> :longest_palindrome
[2] pry(main)> longest_palindrome "racer"
From: (pry) @ line 4 Object#longest_palindrome:
1: def longest_palindrome s
2: max_palindrome_len = 0
3: for i in (0..s.length)
=> 4: binding.pry
5: for j in (i..s.length)
6: binding.pry
7: substr = s[i..j]
8: if substr == substr.reverse && substr.length > max_palindrome_len
9: max_palindrome_len = substr.length
10: end
11: end
12: end
13: return max_palindrome_len
14: end
[1] pry(main)> watch i
Watching i
watch: i => 0
[2] pry(main)> watch j
Watching j
watch: j => nil
[3] pry(main)>