厨师食谱,not_if

时间:2014-09-17 06:22:31

标签: chef chef-recipe

bash"编辑gemfile"做

cwd "/home/vagrant/myapp"
code <<-EOH
echo "group :development, :test do
gem 'capybara'
gem 'rspec-rails'
gem 'selenium-webdriver'
gem 'capybara-screenshot'
gem 'launchy'
end" >>Gemfile
EOH
#####not_if do ::File.exists?('/home/vagrant/myapp/Gemfile') end#####
end

我希望它一旦添加就不再在Gemfile上添加它以避免重复... 请告诉我如何使用正确的not_if命令,谢谢!

2 个答案:

答案 0 :(得分:1)

这个not_if { ::File.exists?('/home/vagrant/myapp/Gemfile') }应该这样做。

这里你使用块语法do .. end在一行上,在这种情况下你必须用分号结束你的命令;

对于您的语法,它将是not_if do ::File.exists?('/home/vagrant/myapp/Gemfile'); end

如果省略分号,则解释器无法猜测您是否将end作为参数或关键字传递。

经验法则:对一个衬垫使用花括号{},对多行程序块使用do .. end

答案 1 :(得分:0)

你的not_if需要使用grepawk或ruby块来检查gemfile并查看它是否包含你想要的行。