2015-06-10 60 views
1

现在就开始为守护进程,在已加载的一切:我的可执行文件运行我的应用程序是这样的:西纳特拉编程

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

和它的作品,但它会阻止终端(这是确定的发展)

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

编辑:

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 

代码我用它来停止西纳特拉守护:

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

回答

3

您可以从内部守护进程的任何红宝石过程中,我用它来作为守护西纳特拉开始

代码你的代码通过使用Process#daemon

+1

这不是一个守护进程,它只是一个进程r在标准输出/错误进入控制台的背景下进行联络。一旦shell关闭,会话将收到一个HUP信号并关闭ruby进程。至少应该做一些类似于“nohup ruby​​ server.rb> /var/tmp/server.out 2>&1&”的命令,以防止进程关闭挂断信号。 –