sinatra以编程方式启动守护进程

时间:2015-06-10 11:26:06

标签: ruby sinatra daemon

现在,在加载了所有可执行文件之后,运行我的应用程序就像这样:

Rack::Handler::pick(['puma']).run VCK::App

它可以工作,但它会阻塞终端(可以开发)

如何从我的可执行文件中以编程方式启动它作为守护程序?

编辑:

我用来启动sinatra作为守护进程的代码:

    if options[:daemonize]
        pid = fork {Rack::Handler::pick(['puma']).run VCK::App}
        File.open(pid_file_loc, 'w') {|f| f.write(pid)}
        Process.detach(pid)
    else
        Rack::Handler::pick(['puma']).run VCK::App
    end

我用来阻止Sinatra Daemon的代码:

Process.kill(15, File.read(pid_file_loc).to_i)

1 个答案:

答案 0 :(得分:3)

您可以使用Process#daemon

在代码中守护任何ruby进程