在90个总宝石中找不到'berkshelf'(> = 0)(Gem :: LoadError)

Bry*_*xon 4 ruby-on-rails chef-infra vagrant rbenv

我在为rails应用程序设置Chef和Vagrant时遇到问题.当我尝试:

$ vagrant up
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Bringing machine 'default' up with 'virtualbox' provider...
The following berks command failed to execute:

    /Users/user/.chefdk/gem/ruby/2.1.0/bin/berks --version --format json

The stdout and stderr are shown below:

stdout: 
stderr: /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:313:in `to_specs':                        
    Could not find 'berkshelf' (>= 0) among 90 total gem(s) (Gem::LoadError)
    Checked in 'GEM_PATH=/Users/user/.vagrant.d/gems:/Applications/Vagrant/bin/../embedded/gems', execute `gem env` for more information
    from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:322:in `to_spec'
    from /opt/chefdk/embedded/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:58:in`gem'
    from /Users/user/.chefdk/gem/ruby/2.1.0/bin/berks:22:in `<main>'
Run Code Online (Sandbox Code Playgroud)

然后,当我跑gem env,我得到:

RubyGems Environment:
- RUBYGEMS VERSION: 2.2.0
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin14.0]
- INSTALLATION DIRECTORY: /Users/user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
- RUBY EXECUTABLE: /Users/user/.rbenv/versions/2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/user/.rbenv/versions/2.1.0/bin
- SPEC CACHE DIRECTORY: /Users/user/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-14
- GEM PATHS:
  - /Users/user/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0
  - /Users/user/.gem/ruby/2.1.0
- GEM CONFIGURATION:
  - :update_sources => true
  - :verbose => true
  - :backtrace => false
  - :bulk_threshold => 1000
  - "gem" => "--no-document"
- REMOTE SOURCES:
  - https://rubygems.org/
- SHELL PATH:
  - /Users/user/.rbenv/versions/2.1.0/bin
  - /usr/local/Cellar/rbenv/0.4.0/libexec
  - /Users/user/.chefdk/gem/ruby/2.1.0/bin
  - /opt/chefdk/bin
  - /Users/user/.rbenv/shims
  - /Users/user/.chefdk/gem/ruby/2.1.0/bin
  - /opt/chefdk/bin
  - /opt/chef/embedded/bin
  - /usr/local/bin
  - /Library/Frameworks/Python.framework/Versions/3.4/bin
  - /Users/user/.rbenv/shims
  - /Users/user/.chefdk/gem/ruby/2.1.0/bin
  - /opt/chefdk/bin
  - /opt/chef/embedded/bin
  - /usr/local/bin
  - /Library/Frameworks/Python.framework/Versions/3.4/bin
  - /Users/user/.chefdk/gem/ruby/2.1.0/bin
  - /opt/chefdk/bin
  - /Users/user/.rbenv/shims
  - /opt/chef/embedded/bin
  - /usr/local/bin
  - /Library/Frameworks/Python.framework/Versions/3.4/bin
  - /Users/user/.rbenv/shims
  - /Users/user/.rbenv/bin
  - .git/safe/../../bin
  - /Users/user/.rbenv/shims
  - /Users/user/.bin
  - /usr/local/sbin
  - /usr/local/bin
  - /usr/bin
  - /bin
  - /usr/sbin
  - /sbin
  - /opt/X11/bin
  - /Users/user/Documents/AppFiles/gsutil
  - /Applications/Postgres.app/Contents/Versions/9.3/bin
  - /Users/user/.rvm/bin
  - /usr/sbin
  - /Users/user/.rvm/bin
  - /Users/user/Documents/AppFiles/gsutil
  - /Applications/Postgres.app/Contents/Versions/9.3/bin
  - /Users/user/.rvm/bin
  - /usr/sbin
  - /Users/user/.rvm/bin
  - /Users/user/Documents/AppFiles/gsutil
  - /Applications/Postgres.app/Contents/Versions/9.3/bin
  - /Users/user/.rvm/bin
  - /usr/sbin
  - /Users/user/.rvm/bin
Run Code Online (Sandbox Code Playgroud)

安装了Berkshelf,以及ChefDK.我还确保添加:

PATH=$HOME/.chefdk/gem/ruby/2.1.0/bin:/opt/chefdk/bin:$PATH 到我的.bash_profile.

任何帮助将非常感激!

Pie*_*ozi 8

vagrant-berkshelf仅支持Chef-DK安装的Berkshelf.

您需要删除gem的Chef&Berkshelf安装.

gem uninstall chef chef-zero berkshelf knife-solo

从主厨网站https://downloads.getchef.com/chef-dk安装Chef-DK ,新版本包含所有这些工具


编辑

如果你使用Kitchen,你需要保持宝石的Berkshelf安装,请 按照这篇文章了解如何:https://stackoverflow.com/a/28221417/3271231