Rails控制台无法加载secrets.yml中的环境变量

9
我试图通过在开发环境下设置一些环境变量并运行rails c来检查secrets.yml加载环境变量的问题。但是,以这种方式加载Rails.applications.secrets时,它没有获取到我设置的任何环境变量(即SECRET_KEY_BASE)。
如果我使用相同的环境变量运行应用程序,它可以正常地获取它们(我正在使用RubyMine运行应用程序,但是从终端运行rails c)。
在我的rails console中,我可以看到使用ENV['SECRET_KEY_BASE']设置的环境变量,但它没有显示在Rails.application.secrets中。为什么?
1个回答

32

简要概述: spring stop

事实证明,在许多不合理的情况下,Spring就是罪魁祸首!通过运行spring stop并再次尝试,我解决了这个问题(感谢相关讨论),之后它完美地工作了。

显然,Spring正在缓存环境或Rails应用程序的某些部分,并在环境变量更改时忽略重新加载它们。


1
请参阅Spring存储库中的此问题:https://github.com/rails/spring/issues/490 - mltsy
2
是的,Spring 真的很烦人。这就是为什么我每次启动 Rails 应用程序时都会使用 --skip-spring。 - dpalazzari
有趣的是,direnv(https://github.com/direnv/direnv)由于这个问题一直无法正常工作,现在它可以了!谢谢。 - Léo
对于像我这样的新手,可以使用 bin/spring stop 命令。 - Joshua F. Rountree
嗨,乔!你刚刚帮我省了些许的挫败感。希望一切都好! - Brad Werth
哈哈,嘿布拉德!很高兴能帮忙 ;D - mltsy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接