根据12因素应用,我在环境变量中存储了几个外部API密码。这在开发中非常有用,但我在生产服务器上遇到了麻烦。环境变量在我的ApplicationController
中的方法中访问,因此可供所有模型使用。
在Ubuntu 14.04下使用Puma 2.8.2运行Rails 4.0.2。 Ruby 2.1.2。与Capistrano 3一起部署。
为了便于讨论,我将调用环境变量PASSWORD和值' somepassword'。
在开发中:
我使用dotenv
从.env
加载这些密码(当然没有在源代码管理中检查)。
echo $PASSWORD
,我得到了#34; somepassword"回 在制作中:
我使用chef
配方访问加密数据包和magic_shell
食谱,以安全地加载密码作为环境变量。
echo $PASSWORD
,我得到了#34; somepassword"回请注意,在生产环境中,我以启动puma
守护程序的同一用户身份登录,并且我能够从CLI和IRB中读取变量。
任何想法当我能够从CLI手动访问变量时,Rails无法访问该变量?
我可以使用config/passwords.yml
路由(例如)我使用chef
加密和分发,但环境变量设置也应该有用。