Шеф-повар 'cookbook' в Berksfile vs 'зависит' в metadata.rb
В чем разница между добавлением кулинарных книг в Berksfile с использованием "кулинарной книги" и добавлением кулинарных книг в metadata.rb с использованием "зависит"? Например, если я добавляю в metadata.rb
depends 'nginx'
Мне нужно добавить его в Berksfile с помощью
cookbook 'nginx'
?
Ответы
Ответ 1
Berksfile имеет значение Berkshelf, а файл метаданных встроен в шеф-повар.
Добавление зависимостей в файл метаданных позволяет другим приложениям, таким как библиотекарь-шеф-повар или супермаркет, читать ваши зависимости.
Обратите внимание, что Berkshelf также считывает зависимости из метаданных, пока вы добавляете строку metadata
в Berksfile.
Я настоятельно рекомендую указать все зависимости в вашем файле метаданных и использовать ваш Berksfile для указания того, где хранятся определенные кулинарные книги, если они недоступны в супермаркете (например, Github или локальный путь).
Ответ 2
Berksfile и metadata.rb имеют разные цели для решения и входят в картину на разных этапах жизненного цикла поваренной книги.
-
Berksfile предназначен для управления зависимостями для кулинарных книг. Рассмотрим случай, когда моя кулинарная книга использует кулинарию сообщества из супермаркет шеф-повара. В этом случае сначала мне нужно загрузить эту кулинарную книгу сообщества из супермаркета и загрузить ее вместе с моей собственной кулинарной книгой на сервер шеф-повара. Berksfile упрощает этот рабочий процесс для вас. С помощью одиночной команды (berks install
) она загружает все зависимые кулинарные книги (и их зависимые кулинарные книги - транзитивные зависимости) из своих соответствующих источников (может быть из хранилища git или из супермаркета). С помощью одной единственной команды berks upload
она загружает все эти кулинарные книги на сервер шеф-повара. Вам не нужно загружать их отдельно с помощью knife cookbook upload
. Роль Berksfile, в частности, завершает цикл жизненного цикла поваренных книг.
-
metadata.rb передается шеф-клиентом, фактически конвергируя node. Он использует этот файл для загрузки всех необходимых кулинарных книг с сервера шеф-повара (при условии, что эти кулинарные книги теперь доступны на сервере шеф-повара, используя berkshelf
или knife
) для node, чтобы успешно завершить работу повара-шеф-повара.