当通过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
该应用程序仍然可以部署并开始运行......但是进程/收割机做了什么以及我可以做些什么来摆脱错误?
答案 0 :(得分:4)
在Mongrel / Passenger时代之前以及在Rack上构建之前,运行Rails应用程序的唯一方法是使用CGI或FGCI。 脚本/收割者文件用于启动/停止Rails过程。
默认情况下,Capistrano尝试启动运行reaper脚本的新Rails进程。 您应该自定义默认行为。
假设您正在使用Passenger运行Rails应用程序(mod_rails),请安装以下Capistrano + Passenger (mod_rails)配方,Capistrano将在部署时正常重启您的Passenger实例。
答案 1 :(得分:3)
使用rails 2.3我将其添加到我的config/deploy.rb
deploy.task :restart, :roles => :app do
run "touch #{current_path}/tmp/restart.txt"
end
这停止了收割者的错误,并正确地重新启动了乘客。