dotenv gem 在 Rails 6 或 Ruby 2.6.5 中没有变量



我使用dotenv gem将用于开发的环境变量存储在机密文件中。在我的计算机上升级ruby和rails后,gem不再提取变量。为了找到原因,在尝试了一段时间不同的选项后,我最终创建了两个相同的应用程序,但只有两个差异。ruby和rails版本。一个应用程序能够提取环境变量,另一个返回零。有什么建议吗?

我的设置

工作应用程序具有

ruby "2.5.0"
gem 'rails',        '~> 5.1.6'

非工作应用程序具有

ruby "2.6.5"
gem 'rails',        '~> 6.0.0'

到目前为止我尝试了什么

  • 我阅读了gem网站上的信息,并尝试将Dotenv::Railtie.load添加到我的config/application.rb文件中
  • 此外,我尝试在我的Gemfile中添加require: 'dotenv/rails-now',以防因为另一个gem问题
  • 我将require 'dotenv/load'添加到需要变量的文件中
  • 我在config/application.rb文件的各个位置添加了'require dotenv/load'

我单独做的每一次更改都使用byebug检查终端中是否加载了变量。并且每次变量仍然是CCD_ 7。

我缺了什么吗?有什么建议吗?或者我应该换一颗宝石?我听说费加罗可能会做同样的事情,只是以前从未使用过。提前感谢您的帮助。

好的,我找到了一种让它工作的方法。不确定我下面的解释是否能解释为什么gem dotenv不能与Rails6一起使用。但是,在最新版本的Rails中,有一种更好的方法可以做到这一点。

参考

我之所以能找到这个答案,是因为Romil Mehta的这篇博客文章(Rails6增加了对多环境凭据的支持(

背景

似乎从Rails 5.2开始,我们就可以存储凭证而不是秘密了。我不知道这一点,并继续使用上述宝石。

现在发生了什么

因此,在创建新的RoR应用程序时,会在Rails应用程序中创建一个configcredentials.yml.enc文件,该文件使用configmaster.key文件中的主密钥进行加密。(注意:您应该在第一次提交git或使用任何其他版本跟踪器之前隐藏此文件。(

有很多方法可以编辑加密的文件,以便为开发添加自己的变量。博客作者以rails控制台行为例:EDITOR=vim rails credentials:edit。我更喜欢"nano"作为我的编辑器,所以我将控制台行更改为:EDITOR=nano rails credentials:edit

新方法

从nanoshell中,credentials.yml.enc文件被解密,我可以读取它。然后我添加了存储在我的机密文件中的凭据,我试图在整个应用程序中访问该凭据。类似这样的东西:

oauth:   
server_base_url: http://localhost:3000
oauth_token: 123
oauth_secret: 456

以前,在我的应用程序中,我只需像在ENV['server_base_url']ENV['oauth_token']中那样调用ENV['variable_name'],就可以引用其中一个密钥,并且我会得到'http://localhost:3000'或'123'。现在,要做同样的事情,我需要有代码:Rails.application.credentials.section_name[:variable_name],其中"section_name"在上面的列表中是"oauth",后面跟着三个变量名。因此,为了引用"oauth_token",我会这样做:Rails.application.credentials.oauth[:oauth_token]

一旦我将所有ENV调用更改为Rails.application.credentials代码,我的应用程序就工作了。它提取了秘密变量(现在是"redentials"(,并让我的示例应用程序连接到oauth服务器以授权登录。

摘要

同样,我不确定这是如何解释为什么gem"dotenv"在我的新Ruby和Rails环境中不起作用的。但是,如果其他人也有同样的问题,这里有一个解决方法!由于这是RoR应用程序的一个功能,它可能不是一个变通方法,而是对应用程序进行编码的正确方法。

快乐编码!

我遇到了类似的问题,在将环境变量添加到Gemfile并运行bundle后,dotenv没有加载环境变量。Spring需要重新启动才能使更改生效。spring stop和重新启动rails控制台/服务器后,ENV变量被识别。

相关内容

  • 没有找到相关文章

最新更新