任务钩前耙

big*_*can 15 ruby rake

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

Rake::Task['lame'].enhance(['i_run_afterwards_ha_ha'])
Run Code Online (Sandbox Code Playgroud)

toc*_*och 32

您可以使用Rake任务的依赖关系来执行此操作,以及Rake允许您重新定义现有任务的事实.

Rakefile

task :your_task do
  puts 'your_task'
end
task :before do
  puts "before"
end
task :your_task => :before
Run Code Online (Sandbox Code Playgroud)

结果

$ rake your_task
before
your_task
Run Code Online (Sandbox Code Playgroud)


Chr*_*wis 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!" 
Run Code Online (Sandbox Code Playgroud)