Каков новый формат для рейк-задач? (задача: t, arg,: needs => [deps] против задачи: t, [args] => [deps])
Я использую Rails 3.1 beta с Ruby 1.9.2 и rake 0.9.2, и имею кучу граблиных задач, которые я написал. Вот пример:
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.
Я экспериментировал с перестановкой аргументов несколькими способами, но я не совсем понимаю, как именно сейчас должна выглядеть моя задача.
Есть ли рейк, ожидающий, что я дам отдельные зависимости? Как определить их в команде rake, если dep является средой рельсов?
Ссылка на обновленную документацию будет приемлемым ответом! Я Googled и Googled, но не повезло.
(И да, я понимаю, что формат указан в сообщении об ошибке. Но этот формат не кажется правильным, основываясь на тех вариациях, которые я пробовал.)
Ответы
Ответ 1
Я знаю, что иногда сложно расшифровать, но сообщение об ошибке дает вам новый формат:
task :t, [args] => [deps]
Итак, для вашего примера:
task :dump_graph, :species_id => :environment
http://www.postal-code.com/binarycode/2011/06/02/rake-needs-deprecated/
Ответ 2
Использование, которое работает для меня, это:
task :task_name, [:argument] => :environment
Я предполагаю, что если бы у вас было несколько зависимостей для списка, для deps понадобилась запись массива.
Я не знаю, почему для одного аргумента требуется обозначение массива - выполнение задачи rake с помощью --trace дает ошибку в отношении символа: аргумент, не отвечающий на пустой? Метод.