【问题标题】:.env not being loaded in test environment in Rails with rspec.env 未使用 rspec 在 Rails 的测试环境中加载
【发布时间】:2015-07-01 15:03:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails rspec environment-variables


    【解决方案1】:

    将此行放在 rspec 设置中的 Dotenv::Railtie.load 或您要加载 dot env 文件的任何页面中。

    【讨论】:

    • 尝试将其添加到 spec_helper.rb 中,我收到此错误 `load': wrong number of arguments (0 for 1..2) (ArgumentError)
    • 哦,无论如何,很高兴看到你解决了这个问题。
    • 如果没有你的帮助,paritosh-piplewar 会为你的帮助欢呼。
    【解决方案2】:
    Dotenv.load(File.expand_path("../../.env.#{Rails.env}", __FILE__))
    

    在研究 Paritosh 的回答后,我发现需要根据环境指定文件。

    【讨论】:

      【解决方案3】:

      这是一个较晚的答案,但对于任何可能觉得它有帮助的人,请将其添加到 spec_helper.rb

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

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

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

      【讨论】:

      • 需要注意的关键点:变体(即.env.test)必须在基础.env之前。
      • 谢谢!我是测试新手,我正要开始翻转表格。
      【解决方案4】:

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

      require "dotenv"
      Dotenv.overload ".env.test" 
      Dotenv.overload ".env.test.local"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多