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

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

multitask 'build_parallel' => ['build_a', 'build_z']

или

multitask :mytask => [:task1, :task2, :task3] do
  puts "Completed parallel execution of tasks 1 through 3."
end

Мой вопрос:

Каков наилучший способ построения глобальной переменной в одной задаче, котораяЯ могу использовать в моей многозадачности?Следующее не выполняет task1, task2, task3 ... что означает, что глобальный $ build_list пуст

$build_list = []
task :build do
   $build_list << 'task1' 
   $build_list << 'task2' 
   $build_list << 'task3'
   Rake::MultiTask[:build_parallel].invoke # or Rake::Task[:build_parallel].invoke
end

multitask :build_parallel => $build_list

Должен ли я использовать переменную ENV здесь или какой-то другой метод предпочтительнее?

Ответы [ 2 ]

1 голос
/ 09 августа 2011

Благодаря предыдущему ответу это привело меня к решению:

Вычислить динамическую переменную в методе вне задачи перед запуском любой из задач в списке зависимостей.

# Generate the list in a method instead of a task
def get_list
  build_list = []
  build_list << 'task1' 
  build_list << 'task2' 
  build_list << 'task3'
end

# Make sure the list has been generated before the multitask call
@build_list  = get_list

# Then define the multitask list dependency
multitask :build_parallel => @build_list
1 голос
/ 09 августа 2011

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

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