我在Rails应用程序中使用了撬。我设置了绑定。窥探我的模型中的一个循环,尝试调试一个问题。例如:
(1..100).each do |i|
binding.pry
puts i
end
当我输入quit时,它会进入下一个迭代并再次停止。是否有一种方法可以退出循环,这样我就不必键入退出100次了?
目前我知道如何摆脱它的唯一方法是使用CTRL+C并重新启动应用程序。
我在Rails应用程序中使用了撬。我设置了绑定。窥探我的模型中的一个循环,尝试调试一个问题。例如:
(1..100).each do |i|
binding.pry
puts i
end
当我输入quit时,它会进入下一个迭代并再次停止。是否有一种方法可以退出循环,这样我就不必键入退出100次了?
目前我知道如何摆脱它的唯一方法是使用CTRL+C并重新启动应用程序。
当前回答
使用gem pry-moves,你可以使用f (finish命令)跳出循环
例子:
42: def test
43: 3.times do |i|
=> 44: binding.pry
45: puts i
46: end
47: puts :finish
48: end
[1] pry(main)> f
0
1
2
Frame: 0/1 method
From: playground/sand.rb:47 main
42: def test
43: 3.times do |i|
44: binding.pry
45: puts i
46: end
=> 47: puts :finish
48: end
其他回答
按“q”,你会看到像这样
[1] pry(#<AlbumsController>)>
type
exit
如果没有,这一个词也可以:
control + c
我使用:
disable-pry
这将保持程序运行,但将防止它继续停止执行。当您在控制台中调试时,这尤其有用。
Use
disable-pry
若要可恢复,请将此添加到控制器中
ENV['DISABLE_PRY'] = nil
根据上面两个答案:
https://stackoverflow.com/a/21735420/3137698 https://stackoverflow.com/a/24945487/3137698
谢谢大家!你的建议对我帮助很大!
我只是想分享一个简单的愚蠢的技巧,我个人用它来一直不用担心DISABLE_PRY环境变量。将此回调永久地添加到项目的基本控制器ApplicationController。它会自动重新启用PRY每次disable-pry被调用:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :reenable_pry
private
def reenable_pry
ENV['DISABLE_PRY'] = nil
end
end
使用gem pry-moves,你可以使用f (finish命令)跳出循环
例子:
42: def test
43: 3.times do |i|
=> 44: binding.pry
45: puts i
46: end
47: puts :finish
48: end
[1] pry(main)> f
0
1
2
Frame: 0/1 method
From: playground/sand.rb:47 main
42: def test
43: 3.times do |i|
44: binding.pry
45: puts i
46: end
=> 47: puts :finish
48: end