Qual è il compito "ambiente" in Rake?


120

Secondo " Custom Rake Tasks ":

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

Per quanto ne so, i :winner => :environmentmezzi "fare environmentprima winner". Ma cosa environment? Quando dovrei usarlo?

Ho provato rake -T, ma nell'elenco non sono riuscito a trovare environment.


Dai un'occhiata alla nuova sintassi stackoverflow.com/questions/12493337/…
Jahan

Risposte:


120

È possibile accedere ai modelli e, di fatto, all'intero ambiente rendendo le attività dipendenti dall'attività dell'ambiente. Questo ti consente di fare cose come run rake RAILS_ENV=staging db:migrate.

Vedere " Attività di rake personalizzate ".


4
Dove è definito nella sorgente? Ho trovato dove si trovano le attività rake e ho trovato una definizione dell'attività vuota che dipende da "app: ambiente", ma non riesco a trovare la definizione dell'attività app: ambiente. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Si carica nel tuo ambiente Rails in modo che tu possa effettivamente usare i tuoi modelli e cosa no. Altrimenti, non ha idea di quelle cose.

Quindi, se hai creato un'attività che ha appena fatto puts "HI!", non è necessario aggiungere l' :environmentattività alle dipendenze. Ma se desideri fare qualcosa di simile, ne User.find(1)avrai bisogno.


35

L'inclusione => :environmentdirà a Rake di caricare completamente l'ambiente dell'applicazione, dando all'attività pertinente l'accesso a cose come classi, helper, ecc. Senza :environment, non avrai accesso a nessuno di questi extra.

Anche => :environmentin sé non rende disponibili le variabili legate all'ambiente, ad esempio environment, @environment, RAILS_ENV, etc.


Il metodo del documento dell'attività è troppo semplice per capirlo.
Albert
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.