Sometimes you just want to add some extra functionality to some existing rake task.
So image having these rake tasks defined:
namespace :do do
task :foo do
puts "foo"
end
task :after do
puts "after"
end
task :before do
puts "before"
end
end
We can prepend the do:before
task to the do:foo
task like this:
Rake::Task["do:foo"].enhance ["do:before"]
# output would be:
# before
# foo
And let something run after a task like this:
Rake::Task["do:foo"].enhance do
Rake::Task["do:after"].invoke
end
# output would be:
# foo
# after
Really neat if you want to add some more stuff, to existing rails tasks for example. I got that idea from here.