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/