为什么上帝不能以`RAILS_ENV`开始执行命令

时间:2013-08-15 02:30:35

标签: ruby-on-rails-3 deployment god

我正在将项目部署到部署了多个应用程序的环境中。所以我使用rvm来分隔每个Rails应用程序的运行环境。

在我的应用程序中,我使用gem god来管理我的delayed_job进程,在我的上帝文件中:

God.watch do |w| 
  ...
  w.start = "RAILS_ENV=#{RAILS_ENV} /usr/local/rvm/bin/rvm in #{RAILS_ROOT} do #{RAILS_ROOT}/script/delayed_job -n 1 start"
  ...
end

但为此,上帝报告说:

/usr/local/rvm/gems/ruby-1.9.3-p327-falcon@global/gems/god-0.13.2/lib/god/process.rb:324:in `exec': No such file or directory - RAILS_ENV=staging /usr/local/rvm/bin/rvm in /home/deployer/deploy/myproject/current do /home/deployer/deploy/myproject/current/script/delayed_job stop (Errno::ENOENT)

如果我将其更改为:

w.start = "export RAILS_ENV=#{RAILS_ENV} /usr/local/rvm/bin/rvm in #{RAILS_ROOT} do #{RAILS_ROOT}/script/delayed_job -n 1 start"

它有效。我想知道添加export是否是在多应用程序环境中执行此操作的正确方法,因为在该服务器上,其他应用程序在RAILS_ENV=production下运行,是否会受到影响?

更新

我刚刚发现我错了,在开头添加export时,God仍然会向我发出同样的错误,我怎么能实现这个目标?

谢谢&最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

最后我了解到我必须这样做:

w.start = "/usr/bin/env RAILS_ENV=#{RAILS_ENV} /usr/local/rvm/bin/rvm in #{RAILS_ROOT} do #{RAILS_ROOT}/script/delayed_job -n 1 start"

然后没关系。

相关问题