Рейк вариативной задачи

Мне нужно определить задачу rake, которая может обрабатывать любое количество аргументов, почти как функции с переменным числом аргументов в C++. Но я не смог найти способ определить это в DSL rake.

Как я могу создать задачу rake, которая может обрабатывать любое количество аргументов? Пример будет полезен.

Спасибо!


person Yossi    schedule 16.11.2011    source источник
comment
Пожалуйста, объясните, как я могу передать ему массив?   -  person Yossi    schedule 16.11.2011


Ответы (2)


Rake версии 0.8 не может с этим справиться, как указано в его документации (он просто игнорирует любые дополнительные аргументы).

Однако, если вы можете переключиться на использование Thor, вы можете получить такое поведение. Чтобы продемонстрировать, создайте Thorfile с этим содержимым:

class VariableArguments < Thor
  desc 'multiple [ARGS]', "Task with multiple arguments"
  def multiple(*args)
    p args
  end
end

а затем назовите это так:

$ thor variable_arguments:multiple one two three four five six

Это печатает следующее:

["one", "two", "three", "four", "five", "six"]

(Проверено с помощью Thor 0.14.6)

person Markus    schedule 18.11.2011

Опираясь на сообщение здесь: Как пройти аргументы командной строки для задачи rake Я думаю, что arg1 будет просто массивом, который вы могли бы сделать array.each do |arg|. Из командной строки это будет означать, что они передаются в списке с разделителями-запятыми в кавычках.

person ScottJShea    schedule 17.11.2011
comment
Да, я копался в некоторых статьях, и аргументы нужно передавать индивидуально, и задача должна знать конкретные аргументы заранее. Единственный способ получить массив — это определить его заранее, а затем учесть это в коде. - person ScottJShea; 17.11.2011