yml rails figaro application ruby-on-rails testing rspec environment-variables rspec-rails

ruby on rails - rails - ¿Cómo obtengo un conjunto de variables ENV para rspec?



rails application yml (3)

Estoy usando foreman para iniciar mi servidor de desarrollo de rieles. Es bueno poder poner todas mis variables de entorno en el archivo .env . ¿Hay una manera de hacer algo similar para mi entorno de prueba?

Quiero establecer una clave API que vcr con la gema vcr , pero no quiero agregar la API al control de versiones. ¿Alguna otra sugerencia además de configurar la variable de entorno manualmente cuando inicio mi script de prueba?


Puedes usar la gema dotenv: funcionará igual que el capataz y se cargará desde un archivo .env. (y un archivo .env.test para sus entornos de prueba)

https://github.com/bkeepers/dotenv


Si solo necesita establecer variables de entorno, puede establecerlas desde la línea de comandos:

SOMETHING=123 SOMETHING_ELSE="this is a test" rake spec

O puede definir lo siguiente en la parte superior de su archivo de Rake o spec_helper.rb:

ENV[''SOMETHING'']=123 ENV[''SOMETHING_ELSE'']="this is a test"

Si no siempre se aplican, podrías usar un condicional:

if something_needs_to_happen? ENV[''SOMETHING'']=123 ENV[''SOMETHING_ELSE'']="this is a test" end

Si desea utilizar un archivo .env Foreman, que se parece a:

SOMETHING=123 SOMETHING_ELSE="this is a test"

Conviértelo en el siguiente y evalúalo.

ENV[''SOMETHING'']=''123'' ENV[''SOMETHING_ELSE'']=''this is a test''

Usted podría hacer

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

aunque no creo que funcione para valores de varias líneas.

Y como señaló @JesseWolgamott, parece que podrías usar la gem ''dotenv-rails'' .


Una opción es alias el comando rspec para que sea un poco más específico. Coloque la siguiente línea en sus archivos de puntos ( .bashrc o .profile o algo así).

alias ''rspec''=''RACK_ENV=test RAILS_ENV=test bundle exec rspec''

Otra opción es colocar variables de entorno en archivos .env específicos:

# .env.test RAILS_ENV=test MONGODB_URI=mongodb://localhost/test # .. etc ..

Usar la gema dotenv funciona o puedes traerlos manualmente

$ export $(cat .env.test) && rspec