Ответ 1
Вы можете использовать драгоценный камень dotenv - он будет работать так же, как и мастер и загрузка из файла .env. (и файл .env.test для тестовых сред)
Я использую мастера для запуска моего сервера разработки рельсов. Приятно, что я могу поместить все переменные среды в файл .env
. Есть ли способ сделать что-то подобное для моей тестовой среды?
Я хочу установить ключ API, который я буду использовать с камнем vcr
, но я не хочу добавлять API в управление версиями. Любые предложения, кроме установки переменной среды вручную, когда я запускаю свои тесты script?
Вы можете использовать драгоценный камень dotenv - он будет работать так же, как и мастер и загрузка из файла .env. (и файл .env.test для тестовых сред)
Если вам просто нужно установить переменные среды, вы можете либо установить их из командной строки:
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'
.
Один из вариантов заключается в том, чтобы псевдоним команды rspec был немного более конкретным. Поместите следующую строку в свои dotfiles (.bashrc
или .profile
или что-то еще).
alias 'rspec'='RACK_ENV=test RAILS_ENV=test bundle exec rspec'
Другой вариант - поместить переменные среды в определенные .ENV файлы:
# .env.test
RAILS_ENV=test
MONGODB_URI=mongodb://localhost/test
# .. etc ..
Использование dotenv
gem работает или вы можете привести их вручную
$ export $(cat .env.test) && rspec