Rails 4无法访问环境变量,但它在shell和IRB中可用

时间:2014-11-03 22:15:33

标签: ruby-on-rails-4 environment-variables puma

根据12因素应用,我在环境变量中存储了几个外部API密码。这在开发中非常有用,但我在生产服务器上遇到了麻烦。环境变量在我的ApplicationController中的方法中访问,因此可供所有模型使用。

在Ubuntu 14.04下使用Puma 2.8.2运行Rails 4.0.2。 Ruby 2.1.2。与Capistrano 3一起部署。

为了便于讨论,我将调用环境变量PASSWORD和值' somepassword'。

在开发中: 我使用dotenv.env加载这些密码(当然没有在源代码管理中检查)。

  • 从CLI我可以运行echo $PASSWORD,我得到了#34; somepassword"回
  • 从IRB我可以运行ENV [' PASSWORD']然后我得到" somepassword"回
  • Rails可以成功阅读ENV [' PASSWORD']

在制作中: 我使用chef配方访问加密数据包和magic_shell食谱,以安全地加载密码作为环境变量。

  • 从CLI我可以运行echo $PASSWORD,我得到了#34; somepassword"回
  • 从IRB我可以运行ENV [' PASSWORD']然后我得到" somepassword"回
  • Rails无法阅读ENV [' PASSWORD']

请注意,在生产环境中,我以启动puma守护程序的同一用户身份登录,并且我能够从CLI和IRB中读取变量。

任何想法当我能够从CLI手动访问变量时,Rails无法访问该变量?

我可以使用config/passwords.yml路由(例如)我使用chef加密和分发,但环境变量设置也应该有用。

0 个答案:

没有答案