使用Ruby Daemons gem检测停止

时间:2009-02-12 19:32:30

标签: ruby daemon

我正在使用红宝石daemon宝石。想知道如何为停止动作添加一些额外的步骤?希望我能够检测到停止被调用,并添加一些额外的代码。有谁知道我怎么能做到这一点?

3 个答案:

答案 0 :(得分:6)

查看守护进程gem代码,看起来它没有明显的扩展点用于此目的。但是,我想知道(在守护进程中)你是否可以捕获守护进程在发生'停止'时发送的KILL / TERM信号......?

trap("TERM") do
  # execute your extra code here
end

或者你可以安装一个at_exit钩子: -

at_exit do
  # execute your extra code here
end

答案 1 :(得分:4)

Rapleaf有a pretty good article on their blog关于Daemons gem的扩展,可能是你正在寻找的。

答案 2 :(得分:2)

在阅读完守护程序文档后,我发现#run method

中有:stop_proc个选项
  

:stop_proc将在守护进程中调用的proc   接收停止请求(仅适用于:load和:proc模式)

所以基本上你可以通过#run#run_proc方法将其作为选项传递

<子> Original answer's link to rubyforge