Ruby on rails 厨师长使用Not_If检查程序是否已安装

Ruby on rails 厨师长使用Not_If检查程序是否已安装,ruby-on-rails,chef-infra,Ruby On Rails,Chef Infra,我正在努力使我的CHEF脚本足够智能,如果已经安装了Rails,就不会尝试安装Rails。下面是我目前的处理方式,但似乎有更好的方法 execute 'install_rails' do user 'root' cwd '/root/' command "/root/.rbenv/shims/gem install rails -v #{node['rails']['version']}" not_if "rails -v | grep \'#{node['rails']['ve

我正在努力使我的CHEF脚本足够智能,如果已经安装了Rails,就不会尝试安装Rails。下面是我目前的处理方式,但似乎有更好的方法

execute 'install_rails' do
  user 'root'
  cwd '/root/'
  command "/root/.rbenv/shims/gem install rails -v #{node['rails']['version']}"
  not_if "rails -v | grep \'#{node['rails']['version']}\'"
end

有谁有过更好的方法吗?

为什么不直接使用普通的
gem\u包
资源或来自poise ruby的
ruby\u gem
资源呢

起初,我尝试了gem_包,但它一直跳过该资源,因为它说它已经是最新的,即使还没有安装Rails。所以我开始用手工的方式来做。我没听说过泊斯鲁比。如果使用gem包,请确保将gem二进制路径设置为资源属性,以便它使用正确的ruby。