Comment obtenir le Rack de l'environnement de Rake?
Est-il un moyen pour obtenir des informations sur le Rack de l'environnement de Rake? Par exemple, comment puis-je savoir si le Rack est en cours d'exécution dans development
ou production
mode?
Je comprends que le Rake n'est pas en Rack-conscient. J'essaie d'éviter la réplication de code dans la quasi-identiques Râteau tâches entre la production et des environnements de dev.
- stackoverflow.com/questions/2715035/rails-env-vs-rails-env
- ce lien est à propos de l'utilisation de l'environnement du rack à l'intérieur des Rails, et ne mentionne rien à propos de rake. Comment est-il appliquer?
- Veuillez afficher ces différentes tâches Rake. Peut-être nous pouvons vous aider si nous voyons un peu de code.
- Il n'y a rien de spécial sur les tâches. Cas plus simple: je veux me connecter à différentes bases de données en fonction de si je suis en dev ou de production.
Vous devez vous connecter pour publier un commentaire.
Question est vieux, mais jamais cherché le meilleur à la pratique de réponse ou une réponse satisfaisante à tous.
La vraie question est: Comment aller de l'sûr de l'environnement est utilisé dans une tâche Rake pour le chargement de la configuration correcte /frapper correctement si:-les conditions.
La réponse: Ensemble de l'environnement avec chaque tâche Rake appel.
Appel en ligne de commande:
Tâche cron appel (crontab):
Vous pouvez vérifier l'
RACK_ENV
dans vos tâches via::environment
tâche que toutes les autres tâches qui en dépendent. À l'intérieur que j'ai toujours définir les valeurs par défaut de toute autre tâche qui aurait besoin. Alors j'aimerais aller plus loin et de proposer la définitionENV['RACK_ENV'] ||= 'development'
, soit au début du Makefile ou à l'intérieur d'un:environment
tâche.Que d'autres de la variable d'environnement, vous pouvez le récupérer en utilisant:
Étant donné que c'est un Sinatra application, et que vous avez mis de l'environnement dans les
config/environment.rb
, vous pouvez ajouter les lignes suivantes à votreRakefile
:Ensuite, vous pouvez récupérer de l'environnement (selon la façon dont vous le mettez en place dans votre
environment.rb
) avecENV['RACK_ENV']
ouSinatra::Application.environment
.Considérant qu'il n'existe pas
config/environment.rb
fichier de configuration, seul le fichier de l'application, par exemplehello_world.rb
, les ouvrages suivants:hello_world.rb:
Rakefile:
Lors
rake your_task
vous devriez obtenir:task :test_rack_env do puts ENV['RACK_ENV'] end
Imprime une ligne vide.production
oudevelopment
?set :environment, :production
.Au bout de 2,5 ans, je veux partager ce que j'ai trouvé pour être la meilleure solution.
Créer un
.env
fichier dans le dossier racine de l'application, et ajouter un drapeau à la spécification de l'environnement de l'application:Ensuite utiliser Brandon Gardiens
dotenv
gem pour charger toutes les variables d'environnement à partir de ce fichier. Maintenant, vous pouvez utiliser les variables d'environnement spécifiées dans.env
dans Râteau tâches.Râteau de s'appuyer sur de manière explicite de la valeur définie dans
.env
, vous devez créer des.env
fichiers pour chaque environnement que vous comptez utiliser (par exemple, dev, test, mise en scène, production, etc).Échantillon
Rakefile
:Si vous souhaitez utiliser les variables d'environnement au sein de votre Rack ou Sinatra app (que vous n'avez probablement), ajoutez les lignes suivantes à la demande de config ou bootstrap bloc:
.env
fichiers pour les différents environnements, utilisez-vous avdi approche de l' ou un autre mécanisme de râteau pour ramasser env vars dans les différents.env
fichiers?.env.production
, qui j'ai passer avec les.env
lors de l'exécution des tests (en renommant le local env fichier à.env.local
lors du test).