我有一个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
任务覆盖.
有人知道我怎么解决这个问题吗?我宁愿重写它,也不必使用新任务.谢谢,麦克斯