簡體   English   中英

Capistrano:如何設置全局環境變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM