在运行现有任务之前,是否有直接修改Rake任务以运行一些代码的方法?我正在寻找相当于增强的东西,它在任务的开始而不是结束时运行。
Rake::Task['lame'].enhance(['i_run_afterwards_ha_ha'])
答案 0 :(得分:31)
您可以使用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
答案 1 :(得分:8)
或者你可以使用rake-hooks gem来做钩子之前和之后:
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!"