.env 未在带有 rspec 的 Rails 测试环境中加载



我正在使用gem 'dotenv-rails', '~> 0.9.0'将环境变量加载到Rails 4.0.5应用程序中。我有一个 .env 文件和一个 .env.test。在开发中一切正常,但是当涉及到测试时,我使用 rspec 所做的,它无法设置环境变量。

我已经在测试环境中进入了 Rails 控制台,我可以看到它们设置为 nil。

关于如何让 dotenv 在测试中加载的任何提示?

这是一个

迟到的答案,但对于任何可能觉得有帮助的人,请将其添加到spec_helper.rb

require 'dotenv'
Dotenv.load('.env')

此外,Dotenv.load 可以接受列表,例如:

Dotenv.load(
  '.env.local',
  '.env.test',
  '.env'
)

如果您有测试特定的环境配置,您可以使用Dotenv.overload覆盖其他环境配置。只需将以下内容添加到您的spec_helper.rbrails_helper.rb

require "dotenv"
Dotenv.overload ".env.test" 
Dotenv.overload ".env.test.local"
Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))

在研究Paritosh的答案后,我发现该文件需要为每个环境指定。

将此

行放在 rspec 设置或要加载点环境文件的任何页面Dotenv::Railtie.load

最新更新