2013-03-29 5 views
11

레이크 작업을 수정하여 기존 작업을 실행하기 전에 약간의 코드를 실행하는 간단한 방법이 있습니까? 나는 향상시키기 위해 동등한 것을 찾고 있는데, 이것은 작업이 끝나기보다는 처음에 실행됩니다.작업 후크 레이크

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

T 그는 태스크를 '절름발이'라고 부르며, 'not_so_lame'이라고 부를 수없고'절름발이'를 호출하기 전에 코드를 실행해야합니까? 'Rake :: Task [ "lame"]. invoke' – Kris

+0

귀하의 답변에 어떤 것을 이해해야하지 않습니까? 당신은 그것이 "절름발이라고 불러야 만합니다, 그것은 not_so_lame"이라고 불릴 수 없다는 것을 의미합니까? – bigtunacan

답변

23

당신은 그렇게 레이크 작업의 종속성을 사용하고 레이크는 기존 작업을 다시 정의 할 수 있다는 사실 수 있습니다. 그 결과

Rakefile

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

$ rake your_task 
before 
your_task 
+0

나는 위의 구문을 시도하고 저를 위해 작동하지 않았다. 그리고 나는 향상이 작업 전이나 후에 뭔가를 실행하는 방식으로 설정 될 수 있다고 생각했습니다. 나도 그걸로 운이 없었어요. 더 이상 기존 작업을 파고 나는 내 사용자 정의 동작을 접두어로하고 싶었고, 나는 그것이 종속성으로 이미 설정되었음을 깨달았다 : visable_task => : 내 행동에 접두사를 붙이려고 할 때 잠복하려고했을 때 : visable_task => : my_deps 이것은 끝에서 실행. 내 의존성을 대신 : undercover => : my_deps로 설정하면 모든 것이 예상대로 작동했습니다. – bigtunacan

+1

나는 분명히 옳았 기 때문에 당신의 대답을 받아 들였습니다. 그리고 다음에 나는 내 끝에 좀 더 파고를 할거야! 감사! – bigtunacan

+0

당신을 진심으로 환영합니다. 그리고 Thx! – toch

6

아니면 이전과 후크 후 수행 할 레이크 - 후크 보석을 사용할 수

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