задача rakefile не принимает вторые параметры - PullRequest
0 голосов
/ 19 марта 2019

У меня есть фрагмент кода из моего 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, '

Я действительно не знаю, что не так

Ответы [ 2 ]

1 голос
/ 19 марта 2019

Параметры должны быть разделены запятыми без пробелов :

task1[TARGET_1,5]
0 голосов
/ 19 марта 2019

Аргументы командной строки разделяются пробелами, и rake рассматривает каждый аргумент как отдельную задачу. Это будет запускать задачи foo и bar:

rake foo bar

Если у вас есть:

rake task1[TARGET_1, 5]

тогда рейк получает два аргумента: task1[TARGET_1, и 5]. Попытка разобрать эти строки приводит к ошибке.

Чтобы получить правильный результат, вы можете удалить пробел, экранировать пробел или поставить аргумент в кавычки:

rake task1[TARGET_1,5]
rake task1[TARGET_1,\ 5]
rake "task1[TARGET_1, 5]"

Обратите внимание, что это поведение не является специфичным для rake, именно так работают аргументы командной строки.

...