如何防止Rake测试调用任务db:test:prepare

每次我想运行Rake测试时,任务db:test:prepare被调用,它从schema.rb和迁移重建我的测试环境数据库。 我想要实现的是禁用db:test的调用:当我想测试make Rails应用程序时准备。 是否可以不修改Rails gem?

这是我见过的解决方案:

在你的Rakefile中:

Rake::TaskManager.class_eval do def remove_task(task_name) @tasks.delete(task_name.to_s) end end 

lib/tasks/db/test.rake

 Rake.application.remove_task 'db:test:prepare' namespace :db do namespace :test do task :prepare do |t| # rewrite the task to not do anything you don't want end end end 

有一个插件可以为您解决这个问题: override_rake_task 。 这是一个快速用法示例:

 namespace :db do namespace :test do override_task :prepare do; end end end 

对于某些旧版本的rails – 你可以放置Rake::Task['db:test:prepare'].clear Rakefile的末尾