J'utilise contremaître pour démarrer mon Rails. C'est bien que je puisse mettre toutes mes variables d'environnement dans le .env
fichier. Existe-t-il un moyen de faire quelque chose de similaire pour mon environnement de test?
Je veux définir une clé API que j'utiliserai avec la gemme vcr
, mais je ne veux pas ajouter l'API au contrôle de version. Avez-vous des suggestions en plus de définir la variable d'environnement manuellement lorsque je démarre mon script de tests?
Vous pouvez utiliser le gem dotenv --- il fonctionnera de la même manière que le contremaître et se chargera à partir d'un fichier .env. (et un fichier .env.test pour vos environnements de test)
Si vous avez juste besoin de définir des variables d'environnement, vous pouvez les définir à partir de la ligne de commande:
SOMETHING=123 SOMETHING_ELSE="this is a test" rake spec
Ou vous pouvez définir ce qui suit en haut de votre Rakefile ou spec_helper.rb:
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
S'ils ne s'appliquent pas toujours, vous pouvez utiliser un conditionnel:
if something_needs_to_happen?
ENV['SOMETHING']=123
ENV['SOMETHING_ELSE']="this is a test"
end
Si vous souhaitez utiliser un contremaître .env
fichier, qui ressemble à:
SOMETHING=123
SOMETHING_ELSE="this is a test"
et le transformer en ce qui suit et l'évaluer:
ENV['SOMETHING']='123'
ENV['SOMETHING_ELSE']='this is a test'
Vous pourriez faire:
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
bien que je ne pense pas que cela fonctionnerait pour les valeurs multilignes.
Et comme @JesseWolgamott l'a noté, il semble que vous pourriez utiliser gem 'dotenv-Rails'
.
Une option consiste à alias la commande rspec pour être un peu plus spécifique. Mettez la ligne suivante dans vos fichiers dot (.bashrc
ou .profile
ou quelque chose).
alias 'rspec'='RACK_ENV=test Rails_ENV=test bundle exec rspec'
Une autre option consiste à placer des variables d'environnement dans des fichiers .env spécifiques:
# .env.test
Rails_ENV=test
MONGODB_URI=mongodb://localhost/test
# .. etc ..
Utiliser la gemme dotenv
fonctionne ou vous pouvez les introduire manuellement
$ export $(cat .env.test) && rspec