使用Passenger for Rails 4 App回顾Procfile

时间:2014-04-06 13:33:23

标签: ruby-on-rails capistrano passenger procfile

我正在尝试使用Recap与Capistrano一起部署我的Rails 4应用。在docs中,它说:

  

ruby​​配方[...]包括工头支持,启动和重新启动Procfile中定义的流程。

我的应用需要在每次部署时重新启动两个进程:

  1. 乘客
  2. 延迟工作
  3. 我已将gem 'foreman'添加到我的Gemfile中,我对Procfile的尝试是:

    # Procfile
    web: sudo service nginx restart
    worker: bin/delayed_job restart
    

    但它显然是错误的,因为在部署时没有重新启动。

    正确的Procfile是什么样的?

    或者,如果这只是首先采取的错误方法,那么更好的方法是确保在每次部署时重新启动这些流程?

1 个答案:

答案 0 :(得分:0)

我最终放弃了领班,而是使用以下代码。

(因为我作为不同的用户在服务器上启动了delayed_job,而且app用户没有权限阻止其他用户进程,我必须先在服务器上手动停止delayed_job。)

# in Capfile

namespace :passenger do
  task :restart do
    run "touch /home/intouchsys/app/tmp/restart.txt"
  end
end

namespace :delayed_job do
  task :restart do
    as_app "bin/delayed_job restart"
  end
end

after "deploy", "passenger:restart"
after "deploy", "delayed_job:restart"