Ruby on rails 为什么看不到我的环境变量-rspec 3.1.0,rails引擎4.1.9

Ruby on rails 为什么看不到我的环境变量-rspec 3.1.0,rails引擎4.1.9,ruby-on-rails,ruby,rspec,environment-variables,Ruby On Rails,Ruby,Rspec,Environment Variables,我有以下的测试文件,在之前:eachdo。。。结束部分我使用了一些环境变量,因为我不知道规范是从dummy还是从engine config/its self读取的,它们都放在dummy的config/application.yml和engines根config/application.yml中 现在,因为这是本地主机测试,我不在乎是否向您显示这两个应用程序都在本地主机上: 两个位置的application.yml文件都包含以下内容: BLACKBIRD_API_KEY: d1cab0ac344f

我有以下的测试文件,在之前:eachdo。。。结束部分我使用了一些环境变量,因为我不知道规范是从dummy还是从engine config/its self读取的,它们都放在dummy的config/application.yml和engines根config/application.yml中

现在,因为这是本地主机测试,我不在乎是否向您显示这两个应用程序都在本地主机上:

两个位置的application.yml文件都包含以下内容:

BLACKBIRD_API_KEY: d1cab0ac344f5074797b8c2b9ce90070e8af3405de8431fa17150a0f3420b41e
BLACKBIRD_API_URL: http://site.local.com::5000/api/internal/v1/
当测试运行时,它会失败,因为nil:NilClass发生在以下方法中:

# We need to check if Blackbird is alive.
def is_alive?
  # Do a simple get and capture the response
  response = HTTParty.get(
    Xaaron.configuration.black_bird_api_url + 'alive/',
    :headers => { "HTTP_AUTHORIZATION" => Xaaron.configuration.black_bird_api_key }
  )

  # If the response is 200 return true, else reeturn thje response code
  if response.code == 200
    return true
  else
    return response.code
  end
end
确切的路线是:

Xaaron.configuration.black_bird_api_url + 'alive/'
当我把binding.pry放在这一行上面并执行Xaaron.configuration.black_bird_api_url时,我得到了nil,所以当我执行ENV['BLACKBIRD_api_url']时,我也得到了nil

所以我的问题是:


为什么我的环境变量设置得如此清晰,却为零。

Rails默认情况下不会加载环境变量,除非在调用Rails时从命令行指定它们。您希望使用或能够从文件中加载环境变量。我相信您想要figaro,因为它读取application.yml而不是.env文件。

我想有人会说这一点,我应该说我已经在使用figaro了。这就是我如何拥有application.yml并使用ENV['SOME_KEY_HERE'],问题甚至是在测试Figaro.ENV.BLACKBIRD_API_URL时返回为零,很明显,它不是零@Dankohnb但是你的bug似乎出现在你对Figaro的使用中,而不是你包含的代码中。我会尝试让Figaro工作,或者切换到dotenv,这是我使用的。这不是一个非常有用的答案。根据我提供的信息,我看不到引入了任何bug。我看不出切换会有什么帮助。
Xaaron.configuration.black_bird_api_url + 'alive/'