70

试图找出大型项目的最佳方法。什么时候适合在配方中添加配方,include_recipe而不是将配方添加到run_list? 有没有好的经验法则?

4

2 回答 2

79

在我看来,任何配方都应该能够在空机器上自行运行。因此,如果某个配方 A 依赖于在它之前运行的配方 B,我总是使用 include_recipe。

例如:2 本食谱,tomcat 和 java。Tomcat 需要 java。

  1. 当一些用户想要安装 tomcat 时,他可能不知道他实际上需要一些其他的说明书来安装它。他运行 tomcat 配方,或者它失败并出现一些完全无用的错误消息,例如“没有找到 java”,或者更糟——它成功了,但是用户当然无法启动 tomcat,因为他没有安装 java。

  2. 但是当include_recipe 'java'tomcat cookbook 中有一行,也需要depends 'java'在 metadata 中有一行时,用户在尝试安装 tomcat 时,会看到可以理解的错误消息:“the cookbook java not found”。这种方式实际上用户可以自己下载依赖项(甚至使用一些自动工具),而无需实际运行配方,而是读取元数据。

于 2013-06-10T09:49:38.160 回答
3

所有逻辑都应使用运行列表进行控制。尽可能尝试的食谱并不像人们想象的那样可重复使用。所做的只是添加另一个地方,用户必须在include_recipe该地方找出运行列表将要做什么,因此使其明确并将其放入运行列表中。

于 2014-05-23T20:05:36.240 回答