継承現在の環境変数を使用せずに、Railsの中でブランドの新しいプロセスを開始するには?

StackOverflow https://stackoverflow.com/questions/4009546

質問

私は、マスターは、他のレールのアプリを制御アプリをレール開発しています。これは、これらのレールのアプリを起動するbashスクリプトを持っており、それは手動でコマンドラインで呼び出さている間、それはうまく動作します。

私はbacktickssystem、または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を使用するには、右?

をロード
役に立ちましたか?

解決

それはロード時に

は、環境変数はルビーにOSによって渡されます。 Rubyは、さらに追加のRailsを開始し、その後、独自の追加の変数を追加します。

あなたはENVハッシュで遊んでそれらを操作することができるはずです。これが定義されているものが表示されます:

ENV.each { |key, val| puts "#{ key } => #{ val }"}
あなたは直接、子を起動するコードを呼び出すENVの値を変更することで、子プロセスに渡されたものを微調整することができます:

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

パスの変更、または環境の子アプリの知識を制限するために、不要なENVエントリをストリッピングはかなり一般的です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top