Какой новый формат для граблей? (задача: t, arg,: needs => [deps] против задачи: t, [args] => [deps]) - PullRequest
19 голосов
/ 07 июня 2011

Я использую 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 - это среда rails?

Ссылка на обновленную документацию будет приемлемым ответом! Я гуглил и гуглил, но не повезло.

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

Ответы [ 2 ]

10 голосов
/ 07 июня 2011

Я знаю, что иногда трудно расшифровать, но сообщение об ошибке дает вам новый формат:

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

Итак, для вашего примера:

task :dump_graph, :species_id => :environment

http://www.postal -code.com / binarycode / 2011/06/02 / реки-потребность-осуждается /

9 голосов
/ 18 июля 2011

Использование, которое работает для меня:

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

Я думаю, если бы у вас было несколько зависимостей в списке, для deps требовалась бы запись массива.

Я понятия не имею, почемуодин аргумент требует обозначения массива - при запуске задачи rake с параметром --trace выдается ошибка о том, что символ аргумента не отвечает на пустое значение?способ.

...