How to reinstall a gem using bundler

waldyr.ar picture waldyr.ar · Aug 30, 2012 · Viewed 86.9k times · Source

I did a bundle show and get the complete path to a gem directory.

Unfortunately, I removed the directory using rm -r gem_path. Then my rails app isn't working anymore. If I try start server or start rails console it outputs the following error:

<class:Application>: uninitialized constant MyAPP::Application::Gem (NameError)

What should I do to have it back?

I tried bundle install or bundle update in hope of forcing the bundle to search the gem and install it back, but didn't work.

I also tried delete the Gemfile.lock and run bundle install. Nothing changed, same error.

The gem in question is Act as taggable on.

Answer

werkshy picture werkshy · Nov 6, 2013

If using rbenv, this will let you completely uninstall and re-install a gem such as rmagick:

First: Try a simple uninstall/reinstall

gem uninstall rmagick
bundle install

If that doesn't work, you can remove all trace of the installed gem. Find your gem installation location:

bundle show rmagick
BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick)))
echo $BUNDLE_DIR

Your gem installation prefix will either be the default e.g. ~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0 or something you set e.g. .vendor

Clear out the gem directory:

rm -rf $BUNDLE_DIR/gems/rmagick-*

Clear out the compiled gem cache:

rm $BUNDLE_DIR/cache/rmagick*.gem

Also clear out bundler's spec cache:

rm $BUNDLE_DIR/specifications/rmagick*gemspec

Then you can re-install:

bundle install