Грабить пользовательские аргументы для всех задач? - PullRequest
3 голосов
/ 06 апреля 2011

Я хочу передать аргумент rake независимо от запускаемой задачи.

Например:

rake my_arg=foo
rake my_arg=foo :install
rake my_arg=foo :upgrade
rake my_arg=foo :bar

Есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 06 апреля 2011

Вы можете отправлять аргументы следующим образом:

rake some_task arg1=value arg2=value

Затем вытащить именованные параметры из ENV внутри вашей задачи rake:

arg1 = ENV['arg1']
arg2 = ENV['arg2']

Вы также можете предоставить более традиционныеКомандная строка переключается следующим образом:

rake some_task -- --arg1=value --arg2=value

А затем используйте OptionParser (или какой-либо другой анализатор параметров) для распаковки ARGV.Не забывайте дополнительные --, если вы хотите использовать переключатели, это скажет rake прекратить анализ командной строки как переключателей.

1 голос
/ 06 апреля 2011

Эти аргументы помещаются в ENV[] граблями, имитирующими переменные среды.Таким образом, вы можете просто использовать реальные переменные среды.Например:

export my_arg=foo
rake install upgrade bar

Поскольку вы можете передать список команд rake, вы также можете сделать это, даже если это не прямой ответ на ваш первоначальный вопрос:

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