Ruby 厨师rvm食谱-访问已安装gems的问题

Ruby 厨师rvm食谱-访问已安装gems的问题,ruby,rubygems,rvm,chef-infra,rubocop,Ruby,Rubygems,Rvm,Chef Infra,Rubocop,我正在尝试使用chef进行以下操作(Centos VM): 安装ruby 1.9.3 创建任何人都可以使用的gemset(“chef-test”) 在“厨师测试”gemset上安装两个gems(rubocop和foodcritic) 我使用的是从包装烹饪书中安装rvm 以下是我食谱的一部分,它超越了rvm食谱,理论上应该做到以上几点: node.override['rvm']['default_ruby'] = 'ruby-1.9.3-p545@chef-test' node.overrid

我正在尝试使用chef进行以下操作(Centos VM):

  • 安装ruby 1.9.3
  • 创建任何人都可以使用的gemset(“chef-test”)
  • 在“厨师测试”gemset上安装两个gems(rubocop和foodcritic)
我使用的是从包装烹饪书中安装rvm

以下是我食谱的一部分,它超越了rvm食谱,理论上应该做到以上几点:

node.override['rvm']['default_ruby'] = 'ruby-1.9.3-p545@chef-test'
node.override[:rvm][:rubies] = [ 'ruby-1.9.3-p545@chef-test' ]
node.override['rvm']['group_users'] = [ 'teamcity' ]

node.override['rvm']['gems'] = {
  'ruby-1.9.3-p545@chef-test' => [
    { 'name'    => 'rubocop',
      'version' => '0.19.1'
    },
    { 'name' => 'foodcritic'}
  ]
}

include_recipe 'rvm::system'
chef converge完成时没有错误,但当我以“teamcity”用户身份登录并执行其中一个gem时,我得到以下信息:

[teamcity@vm02 ~]$ rubocop
/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/
kernel_require.rb:135:in `require': cannot load such file 
-- ruby-progressbar (LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:144:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocop-0.19.1/lib/rubocop/formatter/fuubar_style_formatter.rb:3:in `<top (required)>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocop-0.19.1/lib/rubocop.rb:224:in `<top (required)>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocop-0.19.1/bin/rubocop:7:in `<top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/rubocop:23:in `load'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/rubocop:23:in `<main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/ruby_executable_hooks:15:in `eval'
    from /usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/ruby_executable_hooks:15:in `<main>'
    -- ruby-progressbar (LoadError)
[teamcity@vm02~]$rubocop
/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/
kernel_require.rb:135:在'require'中:无法加载此类文件
--ruby progressbar(加载错误)
来自/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:135:in“rescue in require”
from/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:144:in'require'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocp-0.19.1/lib/rubocp/formatter/fuubar\u style\u formatter.rb:3:in`'
from/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocop-0.19.1/lib/rubocop.rb:224:in`'
from/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/local/rvm/rubies/ruby-1.9.3-p545/lib/ruby/site\u ruby/1.9.1/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/gems/rubocop-0.19.1/bin/rubocop:7:in`'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-测试/存储箱/rubocop:23:在“加载”中
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-测试/bin/rubocop:23:in`'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/ruby_可执行_挂钩:15:in'eval'
from/usr/local/rvm/gems/ruby-1.9.3-p545@chef-test/bin/ruby\u可执行文件\u挂钩:15:in`'
--ruby progressbar(加载错误)

我错过了什么?当我以用户身份登录时,用户被正确地添加到rvm组,并且默认情况下加载正确的gemset。

这与rubocop依赖ruby progressbar有关。看见一种可能的解决方法是更新gemfile,使其版本低于<1.5.0


更新:这在ruby progressbar 1.5.1中已经修复。

在捆绑包更新后,我遇到了这个问题。所以我查看了锁文件中更新的内容,发现它是ruby-progressbar.Makes。再次感谢。