Rails控制台不会在secrets.yml中加载环境变量

mlt*_*tsy 5 ruby-on-rails environment-variables rails-console ruby-on-rails-5

我正在尝试调试secrets.yml加载环境变量的问题,通过在开发中设置一些环境变量并运行rails c来检查事物.当我以Rails.applications.secrets这种方式加载时,它没有拾取我设置的任何环境变量(即SECRET_KEY_BASE)

如果我使用相同的环境变量设置运行应用程序,它会很好地选择它们(我使用RubyMine来运行应用程序,但是rails c从终端运行)

在我的rails控制台中,我可以看到我设置的环境变量ENV['SECRET_KEY_BASE'],但它没有显示出来Rails.application.secrets.为什么?

mlt*_*tsy 17

TL; DR: spring stop

事实证明,正如事情没有任何意义的情况那样多次,春天是罪魁祸首!我通过运行然后再次尝试解决了这个问题(感谢相关的讨论)spring stop,之后它完美地工作了!

显然,Spring正在缓存环境或Rails应用程序的某些部分,而忽略了在环境变量发生变化时重新加载它们.

  • 是的,春天很烦人。这就是为什么我每次都使用--skip-spring启动rails应用程序的原因。 (2认同)