【发布时间】:2011-12-28 01:33:05
【问题描述】:
我有一个 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 任务覆盖。
谁能看到我如何解决这个问题?我宁愿覆盖它也不愿使用新任务。谢谢,马克斯
【问题讨论】:
-
可以直接修改RAILS_ROOT中的Rakefile吗?
标签: ruby-on-rails rake