我有一个封装在守护进程中的 Sinatra 应用程序,如果在 Sinatra 初始化中出现问题,我将无法退出 Sinatra 和守护进程。
这是 Sinatra 类的一个非常简短的示例(在 system.rb 中):
class System < Sinatra::Base
def initialize
if(somethingGoesWrong)
exit!
end
end
end
这是包装 Sinatra 应用程序的守护进程(在 sinatra.rb 中):
Daemons.run_proc('SinatraSystem') do
System.run!
end
当出现问题并且程序需要结束时,运行停止,但是 pid 文件以及任何其他需要清理的东西都被留下而不是删除。似乎 Sinatra 对试图结束 Daemon 很挑剔,或者 Daemon 不断抓住 Sinatra 试图退出。有什么建议可以用干净的方法来逃避 Sinatra 应用程序和守护进程吗?