0

我开始在我的 LWRP 中使用 include_recipe 并且它只是工作 - 不知道 run_context.include_recipe。我不确定我是否理解其中的区别,并且在互联网上阅读了一些内容,这听起来像是常规的 include_recipe 甚至不应该在 LWRP 中工作?

它似乎工作正常,但只是好奇我是否在这里做错了什么。我不希望 include_recipe 每次调用资源时都运行食谱,我只是像常规包含一样使用它——依赖于某些食谱来设置东西的资源首先包含它们。

我假设包含的配方仅在第一次调用资源时运行,如果多次调用资源,则不会重新运行 included_recipe。

4

1 回答 1

2

LWRP 内部的问题include_recipe在于,包含的配方中的资源最终会出现在提供者操作的执行上下文中,这基本上就像一个子上下文。不幸的是,很难找到一个好的解决方案。与您的最后一个问题一样,我的 Poise 库中确实有一个解决方案,但它非常复杂,所有“简单”的解决方案都有其自身的缺点。如果您还没有阅读,请查看https://coderanger.net/two-pass/,这涵盖了 DSL 工作方式的内部结构。添加到那个帖子中,提供程序的内部基本上是它自己的编译和收敛循环版本以及它自己的资源集合。您必须想象执行顺序是如何工作的,并理清哪些资源进入哪些集合以及收敛指针在哪里(基本上就像指令指针和子例程在“普通代码”中工作一样)。

于 2016-10-03T08:38:02.383 回答