2015-07-20 48 views
2

我正在使用需要在某些rake任务期间启动和停止服务器。我正在使用下面的代码:在rake任务中杀死ruby守护进程

task :start_server do 
    job = fork do 
    system `http-server ./_site -p 4000` 
    end 
    Process.detach(job) 
    @pid = Process.pid 
end 

task :stop_server do 
    puts "stopping server" 
    system Process.kill('QUIT', @pid) 
end 

开始工作正常,但我不能让它停下来。

我在Capistrano部署内部调用这些任务,例如, after 'pdf:generate_pdf', 'pdf:stop_server'

我没有得到一个错误,但我仍然可以看到Web服务器提供的页面。

有没有更好的方法来结束这个过程?

回答

0

我发现这个命令完全停止了http服务器。

task :stop_server do 
system("pkill -f http-server") 
end