Рейк перед вызовом задачи

Есть ли прямой способ изменить задачу Rake для запуска некоторой части кода перед запуском существующей задачи? Я ищу что-то эквивалентное усилению, которое выполняется в начале, а не в конце задачи.

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

Ответ 1

Для этого вы можете использовать зависимость задачи Rake и тот факт, что Rake позволяет вам переопределить существующую задачу.

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

Ответ 2

Или вы можете использовать драгоценный камень грабежа, чтобы делать до и после крючков:

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