我正在使用 foreman 来启动我的 Rails 开发服务器。很高兴我可以将所有环境变量放在 .env
文件中。有没有办法为我的测试环境做类似的事情?
我想设置一个我将与 vcr
gem 一起使用的 API key ,但我不想将 API 添加到版本控制中。除了在我启动测试脚本时手动设置环境变量外,还有什么建议吗?
最佳答案
如果您只需要设置环境变量,您可以从命令行设置它们:
SOMETHING=123 SOMETHING_ELSE="this is a test" rake spec
或者您可以在 Rakefile 或 spec_helper.rb 的顶部定义以下内容:
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
如果它们并不总是适用,您可以使用条件:
if something_needs_to_happen?
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
end
如果你想使用 Foreman .env
文件,它看起来像:
SOMETHING=123
SOMETHING_ELSE="this is a test"
并将其转换为以下内容并对其进行评估:
ENV['SOMETHING']='123'
ENV['SOMETHING_ELSE']='this is a test'
你可能会这样做:
File.open("/path/to/.env", "r").each_line do |line|
a = line.chomp("\n").split('=',2)
a[1].gsub!(/^"|"$/, '') if ['\'','"'].include?(a[1][0])
eval "ENV['#{a[0]}']='#{a[1] || ''}'"
end
虽然我认为这不适用于多行值。
正如@JesseWolgamott 指出的那样,您似乎可以使用 gem 'dotenv-rails'
。
关于ruby-on-rails - 如何获取 rspec 的 ENV 变量集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16848553/