我和" j doe"完全相同。 (原始问题在这里:How to step through a loop with pry and view the value of an iterator?),但问题并没有得到真正回答。我想问一下那些实际上使用Pry进行调试的人解释如何在循环发生时进入循环并评估表达式。
我阅读文档,检查终端中的帮助文件,观看YouTubes但遗憾的是我没有得到它。有几次我能够进入循环中#34;我想是偶然的。 我有什么:
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
来设置断点。这是我在终端中使用包含的问题中的示例所做的。我到目前为止,但我的下一步是什么?我如何使下一步完成循环并查看我观察的变量值?
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)>
答案 0 :(得分:0)
pry-debugger
和pry-nav
,您需要它们来执行此操作。我需要使用pry-byebug
。
这是一个关于如何在循环中使用pry的非常简短且有用的视频: