2017-08-09 35 views
0

我有一本食谱(A),它从我们的一台服务器下载一些文件,另一本食谱(B)使用此文件。如何在食谱(B)上进行烹饪手册(A)的编译和运行?

我的问题是,当我运行厨师客户端文件不存在,直到运行列表完成。在我的食谱(B)的元数据文件中,它取决于食谱(A),食谱中的第一行代码包括食谱(A)。我在烹饪书(B)之前也有烹饪书(A)在运行列表中。当我第一次运行厨师客户端时,它不会按照我想要的那样做,它说找不到该文件。如果我再次运行它,它的工作原理与它应该完全相同。

  • 我该如何在食谱(B)之前编写并运行食谱(A)?
+0

如果你把那个特定的资源块放在ruby_block中,它将在编译时被忽略 –

+0

这正是我在coderangers博客中阅读了他们后所做的。 – InsertNameHere

回答

1

这不是厨师的工作原理。您可以在https://coderanger.net/two-pass/中找到完整说明,但是简要地说所有食谱都会被编译,然后所有资源都会收敛,而不管食谱/配方分部如何。

+0

配方中的单个资源(如remote_file资源)可以在编译阶段使用.run_action方法执行。事实上,任何'纯粹'的ruby都是在编译时执行的(就像put vs log资源一样)。所以,如果你想确保文件被下载,你可以这样做 ' remote_file“富”做 行动:什么 end.run_action(:创建) ' 或 ' my_file = remote_file“富”做 action:Nothing end my_file.run_action(:create) ' – JackChance

相关问题