2013-03-29 10 views
11

Czy istnieje prosty sposób modyfikacji zadania Rake, aby uruchomić trochę kodu przed uruchomieniem istniejącego zadania? Szukam czegoś równoważnego do ulepszenia, które działa na początku, a nie na końcu zadania.Zgrabianie przed hakiem zadania

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

T zadanie to musi być nazywane 'lame', nie można go nazwać' not_so_lame' i po prostu uruchomić jakiś kod przed wywołaniem 'lame'? 'Rake :: Zadanie [" lame "]. Invoke' – Kris

+0

Nie mogę zrozumieć czegoś w twojej odpowiedzi? Co sugerujesz, że "musi być nazwany lame, nie można go nazwać not_so_lame"? – bigtunacan

Odpowiedz

23

Możesz wykorzystać zależność zadania Rake, aby to zrobić, oraz fakt, że Rake pozwala na ponowne zdefiniowanie istniejącego zadania.

Rakefile

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

W wyniku

$ rake your_task 
before 
your_task 
+0

Próbowałem powyższej składni i to nie działało dla mnie. I myślałem, że ulepszenie może być ustawione w taki sposób, aby uruchomić coś przed lub po zadaniu. Nie miałem z tym szczęścia. Dalsze wykopywanie się w istniejącym zadaniu Chciałbym przedłużyć moje niestandardowe zachowanie i zdałem sobie sprawę, że było już skonfigurowane jako zależność: visable_task =>: undercover kiedy próbowałem wtedy przedrostować moje zachowanie do: visable_task =>: my_deps to było biegnąc na końcu. Zamiast tego ustawiając swoją zależność jako: undercover =>: my_deps wszystko działało, jak się spodziewałem. – bigtunacan

+1

Zaakceptowałem twoją odpowiedź chociaż jak to jest na pewno w porządku; i następnym razem zrobię jeszcze więcej kopania na moim końcu! Dzięki! – bigtunacan

+0

Nie ma za co. i Thx! – toch

6

Albo można użyć gem natarcia-haki zrobić przed i po haków:

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!" 
Powiązane problemy