没有给出预期结果的秘诀

recipe of not giving expected results

我只想在给定目录“/local/update/”不存在时执行命令

我的食谱代码如下

execute 'test' do
   command "some command here"
   not_if { ::File.directory?("/local/update/") }
end

也试过

not_if { ::File.exist?("/local/update/") }

即使目录存在,它仍然运行命令。 我已经签到 client.log 并且没有跳过这一步

添加一个答案,因为有更好的(内置的)方法可以使 execute 资源幂等。我们可以使用 creates 属性 而不是使用 not_if 来跳过它。来自 documentation:

creates

Ruby Type: String

Prevent a command from creating a file when that file already exists.

示例:

execute 'test' do
   command "some command here"
   creates '/local/update/'
end

使用此实现,如果 /local/update/ 路径不存在,command 将 运行。否则它将报告为“最新”:

* execute[test] action run (up to date)