【问题标题】:Why God can't exec command starting with `RAILS_ENV`为什么上帝不能执行以`RAILS_ENV`开头的命令
【发布时间】:2013-08-15 02:30:34
【问题描述】:

我正在将一个项目部署到部署了多个应用程序的环境中。所以我使用 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下运行,它们会受到影响吗?

更新

我刚刚发现我错了,在开头添加exportGod仍然抛出同样的错误,我该如何实现?

感谢和最好的问候。

【问题讨论】:

  • 上帝能造出一块重得连他都举不起来的石头吗?哈!你的全能现在在哪里,我的美人? :-)

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


【解决方案1】:

最后我知道我必须这样做:

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"

那没关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2011-06-06
    • 2019-10-31
    • 2014-05-15
    相关资源
    最近更新 更多