2011-10-20 26 views
3

私はCapistranoからグローバルenv変数を設定する方法を見つける必要があります。実際の値は実行時に生成されます。リポジトリでチェックしてそこからロードすることはできません。Capistrano:グローバル環境変数の設定方法は?

この値は、1つのイニシャライザにENV['RAILS_ASSET_ID']としてロードする必要があります。

どうすればいいですか?

答えて

1

回避策として、私はこれまでのところ、この方法を使用しています:

desc 'My custom task' 
task :task_foo do 
    asset_version = 12345 
    system "echo #{asset_version} > RAILS_ASSET_ID" 
end 

をし、それが初期化子に取得されます。

File.open(Rails.root.join 'RAILS_ASSET_ID').read.strip] 

しかし、より良い方法がなければなりません。何か案は?

+0

良い方法: 'エコー#{} asset_version >>#{} CURRENT_PATH /設定/初期化子/ asset_version.rb' –

+0

古い値をクリアせずにファイルに何度も何度も追加したいのですが? – tadman

+0

すべてのcap展開で新しいdir構造が作成されるため、ファイル_は存在しません。 '>>'は安全機構であり、ある日開発者がそのファイルを作成する場合に備えています。 –

3

あなたのイニシャライザで指定するのはどうですか?グローバル変数によってあなたがRailsのに使用後のカピストラーノに発生し、何かを意味した場合

ENV['RAILS_ASSET_ID'] = 12345 
2

は[はい、あなたはファイルのいくつかの並べ替えを作成する必要があります。 Rubyの変数は実行の間に持続しません。環境変数は設定できますが、サブプロセスにのみ適用されます。展開時にサーバー上のファイルをダンプする

一つの方法は、リモート、あなたがそこに持っているもののようである:

run "echo #{asset_version} > #{release_path}/config/asset_version.conf" 

あなたは後からピックアップし、あなたがやったように、その値を読み取ることができます。

5

default_environmentカピストラー変数を使用できませんか? CF github/capistrano

例えば、我々は生産にrbenvのためにそれを使用することができます。

set :default_environment, { 
'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" 
} 
関連する問題