Wie führe ich eine Rake-Aufgabe nach allen anderen Aufgaben aus? (d. h. eine Rake AfterBuild-Aufgabe)
Ich bin neu zu Rechen und es verwenden, um zu bauen .net-Projekten. Was mich interessiert ist, dass ein Sammelvorgang druckt eine Zusammenfassung von dem, was getan wurde. Ich möchte diese Aufgabe immer genannt werden, egal, welche Aufgaben rake aufgerufen wurde.
Gibt es eine einfache Möglichkeit, dies zu erreichen?
Dank
Update auf die Frage, Antwort auf Patrick ' s Antwort was ich will, ist die nach der Aufgabe einmal ausgeführt, nachdem alle anderen Aufgaben, so die Ausgabe, die ich will, ist:
task :test1 do
puts 'test1'
end
task :test2 do
puts 'test2'
end
Rake::Task.tasks.each do |t|
<Insert rake magic here>
# t.enhance do
# puts 'after'
# end
end
$ rake test1
test1
after
$rake test2
test2
after
$rake test1 test2
test1
test2
after
und wenn
task :test3 =>[:test1, :test2]
puts 'test3'
end
$rake test3
test1
test2
test3
after
Obwohl die bounty ist verschwunden, jede weitere Hilfe sehr geschätzt. (Sadily, denke ich nicht, dass kann ich Ihnen ein weiteres Kopfgeld.)
InformationsquelleAutor der Frage Chasler | 2009-11-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieses Posting, als eine neue Antwort zu halten, die andere zur Verfügung. Dies ist viel weniger elegant als ich haben, um in die Grundlagen von Rechen-und Sie manuell aktualisieren, die task-Liste, aber es funktioniert.
Ausgänge:
InformationsquelleAutor der Antwort Patrick Ritchie
Sollten Sie in der Lage, dies zu tun mit 'verbessern':
Dadurch wird 'my_after_task' zu sein, aufgerufen, nachdem 'my_task'.
Wenn Sie sich bewerben möchten dies auf alle tasks, nur Schleife über alle tasks, und rufen Sie steigern für jeden:
Vollständige test-Datei:
Und die Ausgabe:
InformationsquelleAutor der Antwort Patrick Ritchie
Fand diese einfache, elegante Antwort hier verwendet, die die Ruby-Methode
at_exit
.Es ist erwähnenswert, dass die Methode definiert nach
at_exit
wird ausgeführt, jedes mal, wenn der rake-Skript aufgerufen wird, unabhängig von der Aufgabe ausgeführt werden, oder wenn eine Aufgabe ausgeführt wird. Dies gilt auch, wenn ausgeführtrake -T
(Liste verfügbare Aufgaben). Stellen Sie sicher, dassat_exit
nur etwas tut, wenn eine Vorherige Aufgabe gesagt, es zu tun.rakefile.rb
shell
Du auch nicht brauchen, um eine Aufgabe auszuführen, wenn Sie nicht wollen.
Machen oder die Ausführung einer Methode
Und möchten Sie vielleicht, um sicherzustellen, dass Sie nur die Bereinigung, wenn eine Aufgabe tatsächlich ausgeführt werden, so dass
rake -T
nicht auch eine Bereinigung.rakefile.rb
InformationsquelleAutor der Antwort Nate
Abgesehen von den hässlichen
Rake.application.instance_variable_set
stärken Sie die Letzte Aufgabe auf der Kommandozeile etwa so:Sollte genau das tun, was Sie tun müssen!
InformationsquelleAutor der Antwort awendt
Können Sie den Kernel.trap-call und legen Sie die "Exit" - signal. Es wird Feuer auf die normalen und anormalen Ausgang.
Setzen Sie diese frühzeitig in Ihre rakefile:
Nun jedes mal, wenn Sie einen "endgültigen" Aufgabe wird ausgeführt, die ganz am Ende des Programms. egal was.
InformationsquelleAutor der Antwort Michael Bishop
Ich weiß nicht, ob es der beste Weg, aber es ist der einfachere:
Machen alle "öffentlichen Aufgaben" Zusammenfassung diejenigen, die aufrufen, den realen Aufgaben.
InformationsquelleAutor der Antwort Nikkau
Wenn jemand kam hierher auf der Suche für das ausführen einer Aufgabe vor alle anderen Aufgaben (zB eine spezielle env be-Aufgabe), können Sie immer noch die gleiche Verbesserung Methode, außer nur das erste argument:
InformationsquelleAutor der Antwort Blaskovicz