2013-03-29 6 views
11

Esiste un modo semplice per modificare un'attività Rake per eseguire un po 'di codice prima di eseguire l'attività esistente? Sto cercando qualcosa di equivalente per migliorare, che funziona all'inizio piuttosto che alla fine del compito.Rake before task hook

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

T Il compito deve essere chiamato 'lame', non può essere chiamato' not_so_lame' e basta eseguire un codice prima di invocare 'lame'? 'Rake :: Task [" lame "]. Invoke' – Kris

+0

Non riesco a capire qualcosa nella tua risposta? Cosa stai insinuando che "deve essere chiamato zoppo, non può essere chiamato not_so_lame"? – bigtunacan

risposta

23

È possibile utilizzare la dipendenza del compito Rake per farlo, e il fatto che Rake consente di ridefinire un'attività esistente.

Rakefile

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

Come risultato

$ rake your_task 
before 
your_task 
+0

Ho provato la sintassi sopra e questo non ha funzionato per me. E pensavo che il miglioramento potesse essere impostato in modo tale da eseguire qualcosa prima o dopo un'attività. Neanche io stavo avendo fortuna con quello. Scavando ulteriormente nel compito esistente volevo anteporre il mio comportamento personalizzato e ho realizzato che era già configurato come dipendenza: visable_task =>: undercover quando stavo cercando di prefisso il mio comportamento a: visable_task =>: my_deps questo era correndo alla fine. Invece impostando la mia dipendenza come: undercover =>: my_deps tutto ha funzionato come mi aspettavo. – bigtunacan

+1

Ho accettato la tua risposta anche se è certamente giusto; e la prossima volta farò qualche altro scavo sulla mia fine! Grazie! – bigtunacan

+0

prego. e Thx! – toch

6

Oppure si potrebbe usare la gemma rake-ganci per fare prima e dopo ganci:

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!"