#ruby #rake #rakefile
#ruby #рейк #rakefile
Вопрос:
У меня есть фрагмент кода из моего rakefile. Некоторые задачи должны иметь несколько параметров.
desc 'confidential'
task :task1, [:targetPrj, :arg1] do |t,args|
args.with_defaults(:arg1 => "0")
TARGET_PROJECT = args[:targetPrj]
TEST_SW = args[:emcTest]
makeApp(t)
end
Если я вызываю rake task1[TARGET _1]
, все в порядке, но если я добавлю второй параметр rake task1[TARGET _1, 5]
, я получу:
Rake aborted!
Don't know how to build task task1[TARGET_1, '
Я действительно не знаю, что не так?
Ответ №1:
Параметры должны быть разделены запятыми без пробелов:
task1[TARGET_1,5]
Ответ №2:
Аргументы командной строки разделяются пробелами, и rake обрабатывает каждый аргумент как отдельную задачу. Это привело бы к запуску задач foo
и bar
:
rake foo bar
Если у вас есть:
rake task1[TARGET_1, 5]
тогда rake получает два аргумента: task1[TARGET_1,
и 5]
. Попытка проанализировать эти строки приводит к ошибке.
Чтобы получить правильный результат, вы можете убрать пробел, экранировать пробел или заключить аргумент в кавычки:
rake task1[TARGET_1,5]
rake task1[TARGET_1, 5]
rake "task1[TARGET_1, 5]"
Обратите внимание, что это поведение не зависит от rake, это то, как аргументы командной строки работают в целом.