I want to test some changes to a cookbook, so I did what I used to do, but the result was far from normal:
$ ../gem-sucks/bin/kitchen converge -----> Starting Kitchen (v1.2.1) !!!!!! The `berkshelf' gem is missing and must be installed or cannot be properly activated. Run `gem install berkshelf` or add the following to your Gemfile if you are using Bundler: `gem 'berkshelf'`. >>>>>> ------Exception------- >>>>>> Class: Kitchen::UserError >>>>>> Message: Could not load or activate Berkshelf (can't activate json-1.8.0, already activated json-1.8.1) >>>>>> ---------------------- >>>>>> Please see .kitchen/logs/kitchen.log for more details >>>>>> Also try running `kitchen diagnose --all` for configuration $ gem list | grep berkshelf berkshelf (3.2.1, 3.1.4, 2.0.10, 2.0.9) berkshelf-api-client (1.2.0) $ gem list | grep json json (1.8.1, 1.8.0) multi_json (1.10.1, 1.7.9)
The machine is running debian Jessie, and lots of packages (I have no idea whether anything ruby related is among) has been updated since I touched this cookbook last.
How do I make kitchen work again?
Look this issue https://github.com/test-kitchen/kitchen-vagrant/pull/126
you need re install berkshelf by gem, then apply patch kitchen-vagrant
Install upstream kitchen-vagrant
Re install old Berkshelf
If you're using ChefDk, then you might be able to fix the problem by deleting the gems installed at
GEM_HOME
(in my case/home/username/.chefdk
).If that doesn't work, try using bundle as in
bundle exec kitchen converge
, this should allow you to use the installed gems in your list.Make sure that the chefdk is in the front of your path.
I ran into this same problem until I adjusted and re-sourced my bash_profile
I had a similar issue but json wasn't installed in GEM_HOME and I ended up having to run the following command to resolve my issue.