2013-03-29 5 views
11

Gibt es eine direkte Möglichkeit, eine Rake-Task so zu modifizieren, dass ein bisschen Code ausgeführt wird, bevor die vorhandene Task ausgeführt wird? Ich bin auf der Suche nach etwas zu verbessern, das am Anfang und nicht am Ende der Aufgabe läuft.Rake vor dem Task-Hook

Rake::Task['lame'].enhance(['i_run_afterwards_ha_ha']) 
+0

T Die Aufgabe muss "lame" genannt werden, kann nicht "not_so_lame" heißen und nur einen Code ausführen, bevor "lame" aufgerufen wird. 'Rake :: Task [" lame "]. Invoke' – Kris

+0

Ich muss etwas in Ihrer Antwort nicht verstehen? Was meinst du damit, dass es "lahm heißt, es kann nicht nicht heißen_o_lame" genannt werden? – bigtunacan

Antwort

23

Sie können die Abhängigkeit von Rake-Aufgabe verwenden, das zu tun, und die Tatsache, dass Rake können Sie vorhandene Aufgabe neu zu definieren.

Rakefile

task :your_task do 
    puts 'your_task' 
end 
task :before do 
    puts "before" 
end 
task :your_task => :before 

Als Ergebnis

$ rake your_task 
before 
your_task 
+0

Ich habe die Syntax oben versucht und das hat nicht für mich funktioniert. Und ich dachte, Verbesserung könnte so eingerichtet werden, dass etwas vor oder nach einer Aufgabe ausgeführt wird. Ich hatte auch kein Glück damit. Weiter in die bestehende Aufgabe eingravierend, wollte ich mein benutzerdefiniertes Verhalten voranstellen und ich erkannte, dass es bereits als Abhängigkeit eingerichtet war: visable_task =>: undercover, als ich dann versuchte, mein Verhalten dem: visible_task =>: my_deps voranzutreiben am Ende laufen. Indem ich meine Abhängigkeit stattdessen wie folgt eingerichtet habe: undercover =>: my_deps hat alles so funktioniert, wie ich es erwartet hatte. – bigtunacan

+1

Ich habe deine Antwort zwar akzeptiert, aber es ist sicherlich richtig; und nächstes Mal werde ich weiter an meinem Ende graben! Vielen Dank! – bigtunacan

+0

Gern geschehen. und Thx! – toch

6

Oder Sie könnten das Rechen-Haken Juwel zu tun, bevor verwenden und nach dem Haken:

https://github.com/guillermo/rake-hooks

namespace :greetings do 
    task :hola do puts "Hola!" end ; 
    task :bonjour do puts "Bonjour!" end ; 
    task :gday do puts "G'day!" end ; 
end 

before "greetings:hola", "greetings:bonjour", "greetings:gday" do 
    puts "Hello!" 
end 

rake greetings:hola # => "Hello! Hola!"