Подтвердить что ты не робот

Каков новый формат для рейк-задач? (задача: 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, но не повезло.

(И да, я понимаю, что формат указан в сообщении об ошибке. Но этот формат не кажется правильным, основываясь на тех вариациях, которые я пробовал.)

4b9b3361

Ответ 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 дает ошибку в отношении символа: аргумент, не отвечающий на пустой? Метод.