Nếu bạn chỉ cần thiết lập các biến môi trường, bạn có thể cài đặt chúng từ dòng lệnh:
SOMETHING=123 SOMETHING_ELSE="this is a test" rake spec
Hoặc bạn có thể định nghĩa như sau ở đầu Rakefile hoặc spec_helper.rb của bạn:
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
Nếu họ không luôn luôn áp dụng, bạn có thể sử dụng một điều kiện:
if something_needs_to_happen?
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
end
Nếu bạn muốn sử dụng một tập tin Foreman .env
, trông giống như:
SOMETHING=123
SOMETHING_ELSE="this is a test"
và biến nó thành những điều sau và eval nó:
ENV['SOMETHING']='123'
ENV['SOMETHING_ELSE']='this is a test'
Bạn có thể làm:
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
mặc dù tôi không nghĩ rằng sẽ làm việc cho các giá trị nhiều dòng.
Và như @JesseWolgamott đã lưu ý, có vẻ như bạn có thể sử dụng gem 'dotenv-rails'
.
Nguồn
2013-05-31 04:22:37
hoặc, như một sự thay thế , bạn có thể 'RAILS_ENV = test exec foreman run bundle exec rspec spec' –
Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn –