路轨上的红宝石-使Byebug在不退出Pry的情况下完成执行



当我在Rails中用Byebug设置断点时,有时我希望它完成执行,但github上的指南说使用exit,它也退出Pry。如果断点在循环中,重复键入continue可能会很烦人。

有没有办法在不退出Rails控制台的情况下停止byebug?

在Rails控制台或Rails服务器中运行byebug时,我通常只通过点击Ctrl+D来退出byebug。

这种方法的问题是,如果你在Rails的服务器上这样做,那么Byebug下次在代码中的任何地方遇到byebug语句时都不会停止并调试。但它在Rails控制台中运行得很好。

尝试!!!。它在priry gem上有效,但不确定它是否在byebug上有效。

这不是最优雅的解决方案,但到目前为止它对我很有效。

如果您的rails应用程序中有一个基本控制器,您可以添加一个访问器来保存一个变量,该变量表示您是否希望进行调试:

attr_accessor :debugging

然后添加/修改初始值设定项,在每次请求时(或每次为该对象创建实例时(将变量设置为true:

def initialize
  @debugging=true
  super
end

最后,无论你想在哪里使用这种行为,都要使用带有条件的byebug调用:

byebug if debugging

然后,当你在IRB控制台,你想退出调试器,但继续执行代码时,你只需要设置变量:

@debugging=false; finish

你甚至可以把它封装在一个助手中,或者做一些OOP魔术,但这是一个很好的起点。好的是,如果您重复请求,除非您再次将变量设置为false,否则您将再次获得标准行为。

如果要退出循环,请尝试skip

只要它与当前断点不同,它就会一直运行到下一个断点。

然后,一旦你脱离了循环,你就可以continue

在控制台中键入finish将退出byebug,而不会关闭pry/rails控制台/rrails服务器。

Ctrl+D也可以。

转到您的代码并删除byebug并保存,然后在buybug终端中写入continue,然后按enter。

Tadaaa你的应用程序将继续,你将在不关闭应用程序的情况下退出byebug。

尝试continuefinish

来源:https://edgeguides.rubyonrails.org/debugging_rails_applications.html#resuming-执行

从代码中删除"调试器",并在控制台中键入"finish">

(byebug) quit
Really quit? (y/n) y
user ~

到目前为止,唯一一个能快速工作且没有问题的。

最新更新