[英]Capistrano: How to set global environment variable?
我需要找到一種從Capistrano設置全局env變量的方法。 實際值是在運行時生成的,我無法在repo中檢查它並從那里加載。
該值必須在一個初始值設定項中作為ENV['RAILS_ASSET_ID']
加載。
我怎么能這樣做?
你不能使用default_environment
capistrano變量嗎? cf github / capistrano
例如,我們可以將它用於生產中的rbenv:
set :default_environment, {
'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
如何在初始化程序中指定它?
ENV['RAILS_ASSET_ID'] = 12345
如果通過全局變量表示在Capistrano中生成並稍后在Rails中使用的東西,那么是的,您將不得不創建某種文件。 Ruby變量在運行之間不會持久存在。 可以設置環境變量,但僅適用於子流程。
在部署期間將文件轉儲到服務器上的一種方法就像你在那里,只有遠程:
run "echo #{asset_version} > #{release_path}/config/asset_version.conf"
您可以稍后選擇並閱讀該值,就像您所做的那樣。
作為一種解決方法,我到目前為止使用此方法:
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]
但必須有更好的方法。 有任何想法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.