2015-07-20 74 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