每次厨师客户端在我的应用主机上运行时,我都不想运行bundle install
我有一个bundle check
执行资源,如果捆绑检查失败,会通知bundle install
资源< / p>
execute "bundle_check" do
cwd node[:app][:install_dir]
user "foo"
command 'bundle check'
action :run
returns [1]
notifies :run, "execute[bundle_install]", :immediately
ignore_failure true
end
我设置了ignore_failure true
属性,但我想知道是否有一种方法可以根据返回值配置notifies
属性进行通知。基本上我不希望将bundle check
的返回值视为失败,而我只想通知该值是否为1.
答案 0 :(得分:3)
您正在考虑错误的通知。在这种情况下,您真正想要的是安装资源上的Resource Guard:
command 'bundle install' do
# ... existing parameters
not_if 'bundle check'
end
如果bundle install
失败(返回非零),这将执行shell保护,然后只运行bundle check
命令。
答案 1 :(得分:1)
使用execute[bundle install]
保护not_if
:
# install gem dependencies
execute 'bundle install' do
command "bundle install --deployment --without development test"
cwd node[:app][:install_dir]
not_if 'bundle check', :cwd => node[:app][:install_dir]
# ...
end
请注意, :cwd => node[:app][:install_dir]
,非常重要