Jakie jest zadanie „środowiska” w Rake?


120

Zgodnie z „ Custom Rake Tasks ”:

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

O ile wiem, :winner => :environmentoznacza to „zrób environmentwcześniej winner”. Ale co to jest environment? Kiedy powinienem go używać?

Próbowałem rake -T, ale na liście nie mogłem znaleźć environment.


Odpowiedzi:


120

Możesz uzyskać dostęp do swoich modeli, a właściwie do całego środowiska, uzależniając zadania od zadania środowiska. To pozwala robić takie rzeczy jak run rake RAILS_ENV=staging db:migrate.

Zobacz „ Niestandardowe zadania prowizji ”.


4
Gdzie jest to zdefiniowane w źródle? Znalazłem, gdzie znajdują się zadania rake, i znalazłem pustą definicję zadania, która zależy od „app: environment”, ale nie mogę znaleźć definicji app: environment task. github.com/rails/rails/blob/master/railties/lib/rails/tasks/…
odigity


41

Ładuje się w środowisku Railsów, więc możesz używać swoich modeli, a co nie. W przeciwnym razie nie ma pojęcia o tych rzeczach.

Więc jeśli wykonałeś zadanie, które właśnie się wykonało puts "HI!", nie musisz dodawać :environmentzadania do zależności. Ale jeśli chcesz zrobić coś User.find(1)dobrze, to będzie tego potrzebować.


35

Włączenie => :environmentspowoduje, że Rake załaduje pełne środowisko aplikacji, dając odpowiednim zadaniom dostęp do takich rzeczy, jak klasy, pomocnicy, itp. Bez tego :environmentnie będziesz mieć dostępu do żadnego z tych dodatków.

Również => :environmentsama nie udostępniają wszelkie zmienne związane ze środowiskiem, na przykład environment, @environment, RAILS_ENV, itd.


Metoda dokumentu zadania jest zbyt prosta, aby go zrozumieć.
Albert. Qing
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.