Выполнение рецепта шеф-повара только после завершения другого рецепта

У меня есть два рецепта в разных кулинарных книгах. Мне нужно, чтобы первый рецепт был полностью завершен до того, как второй начнет выполнение, так как он размещает некоторые файлы, которые понадобятся второму. Я поставил первый перед вторым в списке выполнения, но кажется, что они выполняются параллельно.

Как я могу запустить выполнение второго рецепта, когда первый будет выполнен? (Обратите внимание, что они находятся в разных кулинарных книгах.)


person Jorge Aranda    schedule 16.10.2012    source источник


Ответы (1)


Можете ли вы опубликовать фрагмент кода. Я предполагаю, что вы используете LWRP (возможно, встроенный), и все они выполняются ближе к концу прогона. Это звучит знакомо?

Код типа:

cookbook_file node['.NET']['FilePath'] do
  source node['.NET']['FileName']
  action :create
end

может быть преобразован в:

configFile = cookbook_file node['.NET']['FilePath'] do
  source node['.NET']['FileName']
  action :nothing
end
configFile.run_action(:create)

что означает выполнение принудительно в этой части кода (т.е. когда мы разрешаем рецепт)

person PatrickWalker    schedule 30.10.2012
comment
Это интересная идея. Я не использую LWRP в этих рецептах, но в списке выполнения есть другие рецепты, которые это делают. Вызовут ли они такое поведение? - person Jorge Aranda; 31.10.2012
comment
Мог сделать. Многие встроенные функции, такие как cookbook_file и template, демонстрируют такое поведение. Как вы создаете файлы в первом рецепте для потребления во втором? Является ли проблема в том, что файлы отсутствуют, когда работает второй рецепт, и, следовательно, он падает? - person PatrickWalker; 01.11.2012
comment
Да, я думаю, что это проблема. Первый рецепт создает файлы с cookbook_file "/path/to/file.txt" do source "file.txt" end - person Jorge Aranda; 01.11.2012
comment
Попробуйте добавить бит run_action, у меня есть ответ, и все должно быть хорошо :) - person PatrickWalker; 01.11.2012
comment
Если бы это решило вашу проблему, могли бы вы принять ответ для других людей? Спасибо - person PatrickWalker; 02.11.2012
comment
Да, сделаю, как только я подтвержу, что это решит проблему. Спасибо! - person Jorge Aranda; 02.11.2012