2009-11-08 84 views
3

在部署通過Capistrano的,它會嘗試執行的最後一件事我的Rails應用程序是這樣的:什麼是進程/收割者,爲什麼它不工作?

sudo -p 'sudo password: ' -u app /home/user/public_html/example.com/current/script/process/reaper 

然後拋出這個錯誤:

failed: "sh -c \"sudo -p 'sudo password: ' -u app /home/user/public_html/example.com/current/script/process/reaper\"" on 123.456.789.012 

該應用程序還部署並啓動正常.. 。但是過程/收割者做了什麼,我能做些什麼來擺脫錯誤?

回答

4

在Mongrel/Passenger時代之前,在構建Rack之前,運行Rails應用程序的唯一方法是使用CGI或FGCI。 腳本/收割者文件用於啓動/停止Rails進程。

默認情況下,Capistrano嘗試啓動運行收割者腳本的新Rails進程。 您應該自定義默認行爲。

假設您使用Passenger(mod_rails)運行Rails應用程序,請安裝以下Capistrano + Passenger (mod_rails)配方,Capistrano將在部署時正常重啓您的Passenger實例。

+0

所以,我可以刪除腳本/進程目錄嗎?我已經有了我的應用程序部署良好...只需要殺死那個錯誤。如果這個配方是唯一的方法,酷。但只是想知道是否更容易做到。 – Shpigford 2009-11-08 22:01:15

+0

是的,你可以。事實上,如果你創建一個新的Rails 2.3項目,該文件將不會被創建。 – 2009-11-08 22:30:59

3

使用Rails 2.3添加此我config/deploy.rb

deploy.task :restart, :roles => :app do 
    run "touch #{current_path}/tmp/restart.txt" 
end 

已停止收割的錯誤和正確地重新啓動乘客。

相關問題