有没有办法在不退出整个撬开会话的情况下停止长时间运行的命令?

时间:2015-09-11 15:25:38

标签: ruby pry

我想要一些东西来阻止Pry命令,但我不想退出我的shell。

Control + C 不是我想要的。我不是试图退出循环或退出整个会话。如果我运行一段需要很长时间的代码,我只想返回Pry提示符。

1 个答案:

答案 0 :(得分:1)

如果您从命令行启动Pry(即仅运行IF(c.JOBNUM LIKE a.JOBNUM AND c.IS_COMPLETE=0,1,0) AS `OPEN_DPUS` ),则可以这样做,但如果您在另一个进程中位于pry内,则可能不行。

如果您直接启动Pry,它会设置信号处理程序并捕获 Control + C 以返回REPL。 IRB会做同样的事情,具体取决于ignore_sigint设置。

但是,如果你在另一个进程中运行,那么该进程可能已经建立了自己的信号处理程序。例如,binding.pryrspec都要注意 Control + C 以执行正常关闭。试图在其中一个进程中停止命令实际上会使Pry保持打开状态,但是执行进程的关闭工作,因此只要退出Pry,就会被转储回命令行。

您可以在Pry会话中设置自己的信号处理程序,例如:

rails s

可能有一些非常聪明的东西你可以在那里将执行移回Pry REPL,但几乎可以肯定会对可能存在的其他处理程序造成严重破坏。