前置到现有的耙任务

Prepend to existing rake task

再次定义现有的 rake 任务附加到原始任务,但我想 prepend 到 db:migrate 任务。在某些情况下,我想事先提出错误。有没有一个好的方法来前置现有的 rake 任务?

定义自己的任务并在里面调用db:migrate可能会更好。

namespace :custom_db do
  desc 'migrate db if condition true'
  task :migrate do
    if true #your condition
      Rake::Task['db:migrate'].invoke
    else
      #process errors
    end
  end
end

尝试在 'db' 命名空间上添加 db:custom 任务并使用 enhance 方法调用 db:migrate

# add your custom code on db:custom 
namespace 'db' do
  task 'custom' do
    puts "do custom db stuff"
  end
end

# invoke db:migrate 
Rake::Task['db:migrate'].enhance [:custom]