19

我正在使用带有 Ruby 1.9.2 和 rake 0.9.2 的 Rails 3.1 beta,并且我已经编写了一堆 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 任务中定义这些?

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

(是的,我意识到错误消息中给出了格式。但根据我尝试过的变体,该格式似乎不正确。)

4

2 回答 2

10

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

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

所以对于你的例子:

task :dump_graph, :species_id => :environment

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

于 2011-06-07T19:56:50.880 回答
9

对我有用的用法是:

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

我猜如果您要列出多个依赖项,则 deps 将需要数组表示法。

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

于 2011-07-18T04:43:10.393 回答