Как я могу передать именованные аргументы в задачу Rake? - PullRequest
25 голосов
/ 23 февраля 2011

Есть ли способ передать именованные аргументы в задачу Rake без использования переменных среды?

Я знаю, что задачи Rake могут принимать аргументы в двух форматах:

Переменные среды

$ rake my_task foo=bar

Это создает переменную среды с именем foo и значением bar, к которой можно получить доступ в задаче Rake my_task с помощью ENV['foo'].

Аргументы Rake Task

$ rake my_task['foo','bar']

Передает значения foo и bar первым двум аргументам задачи (если они определены).Если бы my_task были определены как:

task :my_task, :argument_1, :argument_2

, тогда argument_1 будет иметь значение foo, а argument_2 будет иметь значение bar.

1 Ответ

27 голосов
/ 23 февраля 2011

Вы можете сказать такие вещи:

rake some_task -- --arg=value

И тогда, внутри вашей задачи, ARGV будет

[ 'some_task', '--arg=value' ]

чтобы вы могли использовать OptionParser (или какой-либо другой анализатор параметров) для распаковки ARGV, как в любом старом скрипте CLI; смешно выглядящий -- необходим для того, чтобы грабли не пытались проанализировать --arg=like как переключатель граблей.

Вероятно, вам лучше использовать стандартный подход к переменным средам, он не такой уродливый, как все вещи --, и это обычный способ передачи аргументов для разгона задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...