¿Cuál es la tarea de "entorno" en Rake?


120

Según " Tareas personalizadas de rake ":

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

Hasta donde yo sé, los :winner => :environmentmedios "hacer environmentantes winner". Pero lo que es environment? ¿Cuándo debo usarlo?

Lo intenté rake -T, pero en la lista no pude encontrar environment.


Consulte la nueva sintaxis stackoverflow.com/questions/12493337/…
Jahan

Respuestas:


120

Puede obtener acceso a sus modelos y, de hecho, a todo su entorno haciendo que las tareas dependan de la tarea del entorno. Esto te permite hacer cosas como run rake RAILS_ENV=staging db:migrate.

Ver " Tareas personalizadas de rake ".


4
¿Dónde está definido en la fuente? Encontré dónde están las tareas de rake y encontré una definición de tarea vacía que depende de 'app: environment', pero no puedo encontrar la definición de la tarea app: environment. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Se carga en su entorno Rails para que pueda usar sus modelos y lo que no. De lo contrario, no tiene ni idea de esas cosas.

Entonces, si realizó una tarea que acaba de puts "HI!"hacer, no necesita agregar la :environmenttarea a las dependencias. Pero si desea hacer algo User.find(1)así, lo necesitará.


35

La inclusión => :environmentle dirá a Rake que cargue por completo el entorno de la aplicación, dando a la tarea relevante acceso a cosas como clases, ayudantes, etc. Sin el :environment, no tendrá acceso a ninguno de esos extras.

También => :environmenten sí no pone a disposición ninguna de las variables relacionadas con el ambiente, por ejemplo environment, @environment, RAILS_ENV, etc.


El método del documento de la tarea es demasiado simple para entenderlo.
Albert.Qing
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.