任务钩前耙

是否有直接的方法来修改Rake任务以在运行现有任务之前运行一些代码? 我正在寻找相当于增强的东西,它在任务的开始而不是结束时运行。

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

您可以使用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 

或者你可以使用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!"