首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性力学中的rake_deploy是如何与ENV协同工作的

弹性力学中的rake_deploy是如何与ENV协同工作的
EN

Stack Overflow用户
提问于 2018-04-26 08:42:51
回答 2查看 217关注 0票数 0

我正在设置一个生产服务器和一个生产前服务器,并使用J弹性和nginx来运行Rails。我的数据库名和密码在环境变量中。我在shell中通过ssh在.bashrc中设置了它们,在/etc/nginx/app_servers/nginx-passenger.conf中设置了它们,如Configuration reference for Passenger + Nginx 中所记录的那样,但是rake_deploy找不到它们。我已经编写了一个输出ENV的rake任务,所以我可以看到,当我在ssh上作为部署和命令行的一部分运行该任务时,情况就不一样了。Rails应用程序让他们通过the passenger.conf,所以这是可行的,但是可怕的重复。

有没有一种方法可以将我的环境变量设置在这个设置中的一个位置,以便Rails应用程序、rake_deploy和shell都可以访问它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-11 08:42:57

答案是这是不可能的。

当使用使用rake_deploy在部署时运行rake任务时,不可能将您的秘密存储在ENV环境中,并将它们同时用于rails应用程序和rake任务。

原因是rake_deployroot的形式运行。我想增加这个任务:

task :env do puts ENV.to_h.to_yaml sh %[whoami] end

首先打印ENV,然后打印运行命令的用户。

或者,也许有一种方法,如果我可以首先运行一个rake-任务,编辑.bash_profile of root,而不把它放在版本控制中。但感觉既不安全也不专业。

也没有其他地方可以将您的秘密保存在版本控制之外,并在部署之间持久化。

我的PaaS提供商已经与J弹性联系过,告诉他们这一点,他们对改变它不感兴趣。

票数 1
EN

Stack Overflow用户

发布于 2018-04-26 15:26:55

这个变量"ALL_REQUESTS_LOCAL,DB_ADAPTER,DB_HOST,DB_NAME,DB_PASSWORD,DB_USERNAME,EMAIL_USER,EMAIL_PASSWORD,EMAIL_DOMAIN,EMAIL_ADDRESS“应该设置在rakefile中。"nginx_passenger.conf“是Nginx的一个配置文件,与环境variables.Also无关,您可以尝试将这些变量添加到.bash_profile或.bashrc中,以使rake能够访问这些变量。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50038568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档