3

我一直在寻找有关 Berksfile 内容的详细文档,但我发现的只是示例,以及“你可以做到这一点”的非正式内容。(这包括http://berkshelf.com上的材料……)

Q1: Berksfile 的基本语法是什么?

Q2:可以进入 Berksfile 的“声明”的(完整)列表是什么?

Q3:“cookbook”声明采用可选的散列参数。vanilla Berkshelf 支持的(完整)选项列表是什么?

4

1 回答 1

2

对于我的回答,我将链接到 v2.0.12 版本的东西,因为 v3 目前正在开发中。

A1。基本语法与任何 Ruby 文件相同,因为 Berksfile 只是另一个 Ruby DSL(它似乎主要由这个源驱动,并且来自他们的DSL Eval Mixin的一些帮助)

A2。声明的完整列表很难定义,因为 Ruby 可以随时以多种方式进行更改/增强。(猴子补丁万岁)。但似乎从 v2.0.12 开始,完整的声明集包括 ( metadata, group, site, chef_api, cookbook),因为这些是用 Expose_method 标记的方法。每个选项当然取决于每个相同的实现。(也可以将任何有效的 ruby​​ 放入 Berksfile 中,我在 A3 中利用了这一点,评估当然发生在作为 mixin 一部分的 CleanRoom 类中)。

A3。同样,可扩展性使这变得困难,但是从几次通过后,似乎CookbookSource 类定义了哪些是有效选项,以及一些类级别的方法。好吧,利用它是一个ruby dsl,我扔了

puts "options: #{Berkshelf::CookbookSource.valid_options}"

进入我的 Berksfile,跑berks了出来:

options: [:constraint, :locations, :group, :locked_version, :chef_api, :node_name, :client_key, :git, :ref, :branch, :tag, :rel, :github, :protocol, :site, :path, :metadata]

现在所有这些意味着什么,将需要更多地研究源代码。但是,也许这会给您一个浏览事物的起点?

出于好奇,您觉得http://berkshelf.com缺少哪些文档?

于 2014-01-13T01:52:19.907 回答