我正在使用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任务中定义这些?
更新文档的链接是可以接受的答案!我用谷歌搜索和谷歌搜索,但没有运气。
(是的,我知道格式是在错误消息中给出的。但根据我尝试过的变化,这种格式似乎不正确。)
答案 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任务会给出一个错误:参数符号没有响应空?方法