如何在IRB控制台中调试运行于delayed_job任务中的代码?

25

我有一个使用delayed_job运行的后台任务。

从日志记录语句中,我可以看到它正在运行。与在前台运行相比,它似乎没有正确的结果,因此我想在IRB控制台中对其进行调试。

我是这样运行后台任务的:

rake jobs:work

它不会触发调试器语句。

我该如何加载调试器?

2个回答

46

启动标准的 Rails 控制台

ruby script/console

在这里启动一个工作进程,这会触发调试器语句。

worker = Delayed::Worker.new
worker.start

4
延迟任务:Worker.new.start - Gaston Morixe
3
运行以下命令:bundle exec rails runner "Delayed::Worker.new.start"。 - pixeltom
太棒了!我之前一直不知道如何在延迟作业中输出控制台信息。非常感谢! - Greg Blass

13

我使用Pry作为我的控制台和远程调试器。Pry网站在这里Pry rails gem在这里。在你的代码中,添加binding.pry语句可以让你的应用停止执行并打开控制台。它与你的Rails应用程序一样适用于delayed_job。请确保在前台运行delayed_job,以便它仍然连接到终端。例如,使用以下命令启动delayed_job

rake jobs:work

5
需要注意的是,如果你在运行队列之后再添加断点(binding.pry指令),那么你必须先停止并重新启动使用rake jobs:work命令的队列,以便考虑断点。 - Mapad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接