TL;DR: 当我运行 zeus rspec spec/ 时,我的 Figaro 变量没有设置。

标题几乎简要地解释了这个问题,但我会详细说明。

在 Rails 4 应用程序中,我使用 Figaro 来存储特定于环境的配置,例如Rails secret token ( Rails.configuration.secret_key_base )。这本身就很好用。我还使用 Zeus 来预加载我的 Rails 配置,这也很有魅力。

但是,当组合并运行我的 RSpec 规范(通过 zeus rspec spec/ )时,我的 Rails secret token 被删除。当然,这会输出弃用警告,然后出错:

DEPRECATION WARNING: You didn't set config.secret_key_base.

[...]

RuntimeError:
  You must set config.secret_key_base in your app's config.

在规范运行时,我注意到 Rails 环境发生了变化( Rails.env == "test" ),我认为这可能是由 Zeus 自动完成的,即使我从我的 spec_helper.rb 文件中删除了我更改的环境也会发生这种情况。

值得一提的是,我的规范在没有 Zeus 的情况下完全正常运行。

我发现如果我在 spec_helper.rb 中明确地将 secret token 设置为一个值,那么东西在 Zeus 中工作正常,但我的 Figaro 环境变量不存在。

基本上,当 Zeus 运行规范时,我的 Figaro 环境变量似乎没有被设置。如果有人知道我如何让 Zeus 在运行我的测试时设置这些,那就太棒了!

非常感谢,人们。 :-)

最佳答案

我刚刚改用 dotenv gem:

https://github.com/bkeepers/dotenv

将以下行添加到您的 Gemfile 中:

gem 'dotenv', groups: [:development, :test]
bundle install ,然后重新启动 Zeus - 你应该很高兴了!

关于rspec - 在 Rails 中,使用 Figaro、Zeus 和 RSpec,如何在运行 specs 时设置来自 Figaro 的 secret token ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20060349/

10-08 20:46