rake任务的新格式是什么? (任务:t,arg,:需要=> [deps]与任务:t,[args] => [deps])

时间:2011-06-07 19:39:12

标签: rake ruby-on-rails-3.1

我正在使用Rails 3.1 beta和Ruby 1.9.2以及rake 0.9.2,并且我已经编写了一堆rake任务。这是一个例子:

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应用程序加载这些rake任务时,我现在会为每个rake任务重复一次以下警告:

    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.

我已经尝试过以几种不同的方式重新排列论据,但我不清楚我的任务到底应该是什么样的。

rake是否希望我提供个人依赖?如果dep是rails环境,如何在rake任务中定义这些?

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

(是的,我知道格式是在错误消息中给出的。但根据我尝试过的变化,这种格式似乎不正确。)

2 个答案:

答案 0 :(得分:10)

我知道有时很难破译,但错误信息会为您提供新的格式:

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

所以对你的例子来说:

task :dump_graph, :species_id => :environment

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

答案 1 :(得分:9)

对我有用的用法是:

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

我想如果你有几个依赖列表,deps就需要数组符号。

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