rake依赖关系与要求

时间:2013-01-28 21:33:28

标签: ruby-on-rails-3 rake

我有一个rake任务db:test:prepare用于在运行测试之前清除测试数据库。它似乎神奇地依赖于测试,测试:单元和测试:功能任务,它们被定义为某个核心库的一部分。

当我运行其中一个test:单元,或者单独测试:function:db:test:prepare先运行,测试成功。但是如果我运行默认测试任务,则第二套测试失败,因为数据库之间没有重置。

研究一下,我发现rake依赖项如果已经运行一次就会被跳过,所以如果我有task :a => :pretask :b => :pre,如果我定义了第三个任务来运行这两个, task :c => [:a, :b],当我致电rake c时,rake会调用:pre, :a, :b,而不是:pre, :a, :pre, :c

我最终通过编写新任务得到了我想要的行为:

namespace :test do
  task :all do
     Rake::Task['test:units'].invoke
     Rake::Task['db:test:prepare'].execute
     Rake::Task['test:functionals'].invoke
  end
end

有更好的方法吗?或者一种声明依赖项是必需或某些东西的方法? Rake :: Task有一个#reenable方法,我希望它允许一个变通方法,比如在执行结束时让“准备”任务重新启用,这样当第二个任务依赖于它时它会被再次调用,但它似乎没有那样工作。

0 个答案:

没有答案