在我的rails应用中,我设置了来自env的响应头:
response.headers['application-version'] = ENV["APPLICATION_VERSION"]
我尝试在capistrano部署文件中设置env变量,但不起作用。
set :default_environment, {
'APPLICATION_VERSION' => Time.now.strftime('%Y%m%d%H%M%S%L')
}
如何在部署时设置环境变量?
发布于 2014-09-01 07:56:38
我正在安装gem Figaro,更新capistrano2文件:
task :set_version do
put 'application_version: ' + Time.now.strftime('%Y%m%d%H%M%S%L'), "#{current_path}/config/application.yml"
end
before 'deploy:start', 'set_version'
在我需要application_version变量的地方,我把它放在rails文件中:
app_version = Figaro.env.application_version
附注:'deploy:restart‘不要重新加载config/application.yml文件,需要:'deploy:stop’和'deploy:start‘
发布于 2014-08-29 13:09:35
设置default_environment
(或Capistrano 3.x的default_env
)将仅在部署命令期间设置变量。从docs
可用于设置执行的所有命令都应存在的环境变量的散列。
如果您想要设置rails服务器使用的环境变量-这是另一个进程,另一个vm实例,在另一个登录会话中-您需要为正在执行的会话设置环境变量,例如,通过.bashrc
、.profile
、.zshrc
或您正在使用的任何shell。您还可以使用一些环境变量管理器,如direnv、rbenv-vars等。
希望这能有所帮助。
https://stackoverflow.com/questions/25568243
复制