0

我有一个封装在守护进程中的 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 应用程序和守护进程吗?

4

0 回答 0