我在Rails应用程序中使用了撬。我设置了绑定。窥探我的模型中的一个循环,尝试调试一个问题。例如:

(1..100).each do |i|
  binding.pry
  puts i
end

当我输入quit时,它会进入下一个迭代并再次停止。是否有一种方法可以退出循环,这样我就不必键入退出100次了?

目前我知道如何摆脱它的唯一方法是使用CTRL+C并重新启动应用程序。


当前回答

根据上面两个答案:

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

其他回答

要退出所有内容,使用:

exit!

这应该忽略所有正在进行的绑定。

要无条件退出priy,请键入

exit-program

编辑自@Nick的评论:也适用:

!!!

根据上面两个答案:

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