我对Chef的资源模型中的only_if和not_if的逻辑顺序感到困惑。
在下面的示例中,假设一个名为/ tmp / foo的文件包含单词bar:
execute "rm /tmp/foo" do
action :run
only_if "ls /tmp/foo"
not_if "grep bar /tmp/foo"
end
Run Code Online (Sandbox Code Playgroud)
怎么了?only_if和not_if是否互斥?和?要么?哪个先到?为什么?
会按照代码中给出的顺序运行。每种方法的内部原理基本上可以归结为,@guards << Guard.new(*args)因此它们隐式地跟踪顺序。这两个子句都必须为运行操作“传递”。通常,这是一个坏主意,因为如果您必须留下非常非常好的评论,那么它很难阅读。