2011-06-07 68 views
19

我正在使用Rails 3.1 beta与Ruby 1.9.2和Rake 0.9.2,我编写的一堆rake任务。这里有一个例子:什么是rake任务的新格式? (任务:t,arg,:needs => [deps]与任务:t,[args] => [deps])

namespace :data do 
    desc "dump the nodes and edges for a graph" 
    task :dump_graph, :species_id, :needs => :environment do |t,args| 
    args.with_defaults(:species_id => 'Hs') 
    # ... 
    end 
end 

当我的Rails应用程序加载这些耙的任务,不过,我现在得到以下警告每个耙子任务重复一次:

at /home/user/railsapp/lib/tasks/data/dump_graph.rake:3:in `block in <top (required)>' 
WARNING: 'task :t, arg, :needs => [deps]' is deprecated. Please use 'task :t, [args] => [deps]' instead. 

我已经重新安排试验以几种不同的方式提出争论,但我不清楚现在我的任务应该是什么样子。

耙子是否希望我给个体的依赖?如果dep是rails环境,我如何在rake任务中定义它们?

更新文档的链接将是一个可接受的答案!我谷歌搜索和谷歌搜索,但没有运气。

(是的,我意识到格式在错误信息中给出,但该格式似乎不正确的基础上,我已经试过了变化。)

+0

我也有这个问题,但解决方案无法正常工作。我甚至有一个没有参数的rake任务,它也不起作用。我的语法如下所示:'task:task_name =>:environment do ... end' – n8gard 2012-03-20 18:53:29

回答

10

我知道有时候很难破译但错误信息给你新的格式:

task :t, [args] => [deps] 

因此,对于你的例子:

task :dump_graph, :species_id => :environment 

http://www.postal-code.com/binarycode/2011/06/02/rake-needs-deprecated/

+6

奇怪的是,当我正在试验这个时,我无法让它工作,但它现在可以工作。我通过这样做来实现它:'task:dump_graph,[:species_id] => [:environment]'。如果你只有一个dep,显然右边的列表是可选的。 – 2011-07-19 17:50:35

9

这对我的作品的用法是:

task :task_name, [:argument] => :environment 

我想如果你有几个依赖关系列出,DEPS需要的数组符号。

我不知道为什么一个参数需要数组表示法 - 使用--trace运行rake任务给出一个有关:参数符号不响应空的错误?方法。