web-dev-qa-db-fra.com

Quelle est la tâche "environnement" dans Rake?

Selon " Custom Rake Tasks ":

desc "Pick a random user as the winner"
task :winner => :environment do
  puts "Winner: #{pick(User).name}"
end

Pour autant que je sache, le :winner => :environment signifie "faire environment avant winner". Mais qu'est-ce que environment? Quand devrais-je l'utiliser?

J'ai essayé rake -T, mais dans la liste, je n'ai pas trouvé environment.

111
Lai Yu-Hsuan

Vous pouvez accéder à vos modèles et, en fait, à tout votre environnement en rendant les tâches dépendantes de la tâche de l'environnement. Cela vous permet de faire des choses comme run rake Rails_ENV=staging db:migrate.

Voir " tâches de rake personnalisées ".

112
Sameer C

Il se charge dans votre environnement Rails) afin que vous puissiez réellement utiliser vos modèles et quoi d'autre. Sinon, il n'a aucune idée de ces choses.

Donc, si vous avez créé une tâche qui vient de faire puts "HI!", Vous n'avez pas besoin d'ajouter la tâche :environment Aux dépendances. Mais si vous souhaitez faire quelque chose comme User.find(1) bien, vous en aurez besoin.

39
MrDanA

Comprenant => :environment indiquera à Rake de charger tout l’environnement de l’application, donnant ainsi à la tâche pertinente l’accès à des éléments tels que des classes, des aides, etc. Sans le :environment, vous n’avez accès à aucun de ces extras.

Également => :environment lui-même ne met à disposition aucune variable liée à l'environnement, par ex. environment, @environment, Rails_ENV, etc.

31
Lars Levie