如果我有以下代码,那么我在 puppet 中有一个类:
class A {
require B
....
}
我收到循环依赖错误。如果我有:
class A {
include B
....
}
一切正常
答案1
实际上,它们是完全不同的东西。说require B
意味着B
必须在之前(因此,如果某些内容变成) A
,则会导致循环依赖关系)。而如果根本没有包括在内,则会导致缺少依赖关系错误。B
require A
B
另一方面,include B
它只是说B
只要被应用就会被应用A
:它并没有说明它们之间的顺序。
答案2
这是刚刚在 Puppet 邮件列表中询问(并回答)的问题:
当需要应用目录时,差异就很明显了。使用 include 时,您已经在包含时评估了其内容 - 但任何资源都必须在包含后明确依赖。使用 require - 依赖项已为您创建 - 但您必须小心并确保这是您想要的结果
- Ken Barber需要还是包含?