代码之家  ›  专栏  ›  技术社区  ›  Cheng

如何在Rails中启动一个全新的流程,而不继承当前的环境变量?

  •  0
  • Cheng  · 技术社区  · 14 年前

    我正在开发一个控制其他Rails应用程序的主Rails应用程序。它有一个bash脚本来启动这些Rails应用程序,当它在命令行中被手动调用时工作得很好。

    但如果我在Matter Rails应用程序中调用它,使用 backticks , system exec ,脚本将失败。

    错误消息为:

    unicorn_rails worker[0] -c ../configs/unicorns/c5.rb -E production must be run inside RAILS_ROOT:
     #<Gem::LoadError: can't activate rack (~> 1.0.0, runtime), already activated rack-1.2.1.
     Make sure all dependencies are added to Gemfile.>

    下面是bash文件:

    cp configs/Gemfile* $1
    cd $1
    bundle
    bundle exec unicorn_rails -c ../configs/unicorns/$1.rb -E production

    如何解决这样的问题?

    如你所见,我用 bundle exec 要启动子进程,应该加载它自己的宝石,对吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   the Tin Man    14 年前

    ENV.each { |key, val| puts "#{ key } => #{ val }"}
    

    ENV['PATH'] = '/path/to/application'
    ENV['PATH'] # => "/path/to/application"