我有一个 Rails 2.2项目,其中我想覆盖 rake db:test:prepare
任务的功能。我以为这会有用,但没用:
#lib/tasks/db.rake
namespace :db do
namespace :test do
desc "Overridden version of rails' standard db:test:prepare task since the schema dump used in that can't handle DB enums"
task :prepare => [:environment] do
puts "doing db:structure:dump"
Rake::Task['db:structure:dump'].invoke
puts "doing db:test:clone_structure"
Rake::Task['db:test:clone_structure'].invoke
end
end
end
我理解标准任务的行为。如果我将任务的名称改为 :prepare2
,然后执行 rake db:test:prepare2
,那么它就可以正常工作。我从中得出的自然结论是,我的 rake 任务被定义为 之前内置的 Rails 任务,所以我的任务被标准的 :prepare
任务覆盖。
有人知道我该怎么补救吗?我宁愿覆盖它,也不要使用新任务。谢谢 Max