Как передать именованные аргументы в задачу Rake?
Есть ли способ передать именованные аргументы в задачу Rake без использования переменных среды?
Мне известно, что задачи Rake могут принимать аргументы в двух форматах:
Переменные среды
$ rake my_task foo=bar
Это создает переменную среды с именем foo
и значением bar
, к которому можно обратиться в задаче Rake my_task
на ENV['foo']
.
Аргументы задачи Rake
$ rake my_task['foo','bar']
Это передает значения foo
и bar
в первые два аргумента задачи (если они определены). Если my_task
были определены как:
task :my_task, :argument_1, :argument_2
тогда argument_1
будет иметь значение foo
, а argument_2
будет иметь значение bar
.
Ответы
Ответ 1
Вы можете сказать такие вещи:
rake some_task -- --arg=value
И затем, внутри вашей задачи, ARGV
будет
[ 'some_task', '--arg=value' ]
чтобы вы могли использовать OptionParser (или какой-либо другой парсер параметров) для распаковки ARGV
, как в любом старом CLI script; смешно выглядящий --
необходим, чтобы грабли не пытались разобрать --arg=like
как переключатель грабли.
Вероятно, вам будет лучше со стандартным подходом к переменной окружения, он не такой уродливый, как все элементы --
, и это обычный способ передачи аргументов для задач rake.