Ответ 1
Как я вижу, любой рецепт должен работать на пустой машине сам по себе. Так что если какой-то рецепт А зависит от рецепта B, перед ним я всегда использую include_recipe.
Например: 2 поваренные книги, tomcat и java. Tomcat требует java.
-
Когда какой-то пользователь хочет установить tomcat, он, возможно, даже не подозревает, что на самом деле ему нужна другая кулинарная книга для его установки. Он запускает рецепт tomcat, и либо он терпит неудачу с каким-то совершенно бесполезным сообщением об ошибке, например "Нет java found", либо еще хуже - ему это удается, но тогда, конечно, пользователь не может запустить tomcat, потому что у него нет java.
-
Но когда есть строка
include_recipe 'java'
в кулинарной книге tomcat, которая также нуждается в строкеdepends 'java'
в метаданных, пользователь при попытке установить tomcat увидит понятное сообщение об ошибке: "cookbook java not найденный". Таким образом, на самом деле пользователь может загружать зависимости самостоятельно (или даже с помощью некоторого автоматического инструмента) без фактического запуска рецептов, но чтение метаданных.