我有一个运行列表:recipe-A, my-recipe。
recipe-A创建/etc/A目录。
my-recipe有以下代码:
...
// create '/etc/A/file-1'
...
File.symlink('/etc/A/file-1', '/etc/A/file-2')
...因此,当my-recipe运行时,应该已经有了/etc/A目录,这是由recipe-A创建的。但我在厨师第一次跑的时候就发现了这个错误:
================================================================================
Recipe Compile Error in ...
================================================================================
Errno::ENOENT
-------------
No such file or directory - (/etc/A/file-1, /etc/A/file-2)当显示此错误消息时,我确信没有运行recipe-A。但是,难道recipe-A不应该先运行吗?为什么主厨要检查/etc/A的存在,它是由recipe-A在未运行时创建的?我怎么才能解决这个问题?
发布于 2013-10-16 13:23:01
不要以ruby代码的形式运行它,使用链接资源创建符号链接。
link "/etc/A/file-2" do
to "/etc/A/file-1"
end我确信您的Ruby代码已经在主厨运行的编译阶段期间执行了,这就是为什么第二个菜谱中的代码似乎首先被执行的原因。
https://stackoverflow.com/questions/19403665
复制相似问题