Quelle est la tâche «environnement» dans Rake?

120

Selon " Tâches de rake personnalisées ":

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

Autant que je sache, les :winner => :environmentmoyens «faire environmentavant winner». Mais quoi environment? Quand dois-je l'utiliser?

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

Lai Yu-Hsuan
la source
Découvrez la nouvelle syntaxe stackoverflow.com/questions/12493337/…
Jahan

Réponses:

120

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

Voir " Tâches de râteau personnalisées ".

Sameer C
la source
4
Où est-il défini dans la source? J'ai trouvé où se trouvent les tâches de rake, et j'ai trouvé une définition de tâche vide qui dépend de `` application: environnement '', mais je ne trouve pas la définition de l'application: tâche d'environnement. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity
4
@odigity On dirait ici: github.com/rails/rails/blob/v4.2.4/railties/lib/rails/…
Carson Reinke
41

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

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

MrDanA
la source
35

L'inclusion => :environmentindiquera à Rake de charger complètement l'environnement de l'application, donnant à la tâche appropriée un accès à des éléments tels que des classes, des helpers, etc. Sans le :environment, vous n'aurez accès à aucun de ces extras.

En outre => :environmentelle - même ne rend pas disponible toutes les variables liées à l' environnement, par exemple environment, @environment, RAILS_ENV, etc.

Lars Levie
la source
La méthode du document de la tâche est trop simple pour la comprendre.
Albert.Qing