什么是过程/收割机,为什么它不起作用?

时间:2009-11-08 21:42:22

标签: ruby-on-rails process scripting

当通过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

该应用程序仍然可以部署并开始运行......但是进程/收割机做了什么以及我可以做些什么来摆脱错误?

2 个答案:

答案 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

这停止了收割者的错误,并正确地重新启动了乘客。