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

Doc*_*awk 19 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
Run Code Online (Sandbox Code Playgroud)

但是,当我的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.
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

小智 10

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

task :t, [args] => [deps]
Run Code Online (Sandbox Code Playgroud)

所以对于你的例子:

task :dump_graph, :species_id => :environment
Run Code Online (Sandbox Code Playgroud)

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

  • 奇怪的是,当我试验这个时,我无法让它工作,但现在确实如此.我通过这样做来实现它:`task:dump_graph,[:species_id] => [:environment]`.显然,如果您只有一个dep,则右侧的列表是可选的. (6认同)

小智 9

对我有用的用法是:

task :task_name, [:argument] => :environment
Run Code Online (Sandbox Code Playgroud)

我想如果你有几个依赖列表,deps将需要数组表示法.

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