Laut " Custom Rake Tasks ":
desc "Pick a random user as the winner"
task :winner => :environment do
puts "Winner: #{pick(User).name}"
end
Soweit ich weiß, :winner => :environment
bedeutet das " environment
vorher tun winner
". Aber was ist environment
? Wann soll ich es benutzen?
Ich habe es versucht rake -T
, aber in der Liste konnte ich nicht finden environment
.
ruby-on-rails
rake
Lai Yu-Hsuan
quelle
quelle
Antworten:
Sie können auf Ihre Modelle und sogar auf Ihre gesamte Umgebung zugreifen, indem Sie Aufgaben von der Umgebungsaufgabe abhängig machen. Auf diese Weise können Sie Dinge wie tun
run rake RAILS_ENV=staging db:migrate
.Siehe " Benutzerdefinierte Rechenaufgaben ".
quelle
Es wird in Ihre Rails-Umgebung geladen, sodass Sie Ihre Modelle tatsächlich verwenden können und was nicht. Ansonsten hat es keine Ahnung von diesen Dingen.
Wenn Sie also eine Aufgabe erstellt haben, die gerade ausgeführt wurde,
puts "HI!"
müssen Sie die:environment
Aufgabe nicht zu den Abhängigkeiten hinzufügen . Aber wenn Sie so etwasUser.find(1)
gut machen wollen, brauchen Sie es.quelle
Durch das Einschließen
=> :environment
wird Rake angewiesen, die Anwendungsumgebung vollständig zu laden und der entsprechenden Aufgabe Zugriff auf Dinge wie Klassen, Helfer usw. zu:environment
gewähren . Ohne diese Option haben Sie keinen Zugriff auf diese Extras.Auch
=> :environment
nicht selbst zur Verfügung stellen alle umweltrelevanten Variablen, zum Beispielenvironment
,@environment
,RAILS_ENV
etc.quelle