强迫ruby程序在退出时重新运行的方法?

时间:2016-07-13 16:46:21

标签: ruby exit

我确定有一种简单的方法可以做到这一点,但我似乎无法找到它。

我只是希望我的ruby程序一直运行,所以如果它出于某种原因退出或终止,我希望它能自动重新运行。

有关如何实现这一目标的任何想法?

-Thanks

2 个答案:

答案 0 :(得分:0)

虽然您可以自己编写此类内容,但最好从像daemons这样的库开始,并使用它来管理您的流程。

如自述文件所示,它非常简单:

require 'daemons'

Daemons.run('service.rb')

service.rb是您希望继续运行的主应用程序的入口点。

您在同一个Ruby进程中强制重启应用程序的方法似乎可行,但它可能会在以后引起混乱。如果您的程序进入了一个状态,其中任何事情都会导致异常,并导致重新启动,这会立即触发新的异常,该怎么办?如果由于内部状态被破坏而崩溃会怎么样?

让它死掉,用Daemons这样的监督程序干净地重新启动它,你会好起来的。这些主管经常会重启,以避免在服务器遇到麻烦的情况下每秒重启数千次。

答案 1 :(得分:0)

您在服务器中使用的监视器正确地为您完成了重启逻辑(systemd或monit可以很容易地完成,但还有很多其他的)。

如果你正在做服务,你不希望它每次都重启,因为它太昂贵了,这个过程是在一个等待收入请求的事件循环中保存,但这通常是在库中为你完成的您用来处理协议,因此您只编写传入请求的处理程序。