All Projects → tpope → Rbenv Communal Gems

tpope / Rbenv Communal Gems

Licence: mit
Share gems across multiple rbenv Ruby installs

Programming Languages

shell
77523 projects

Share gems across multiple rbenv Ruby installs

Take a look at this gem path:

~/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1

See that second version in there? That's the built-in RubyGems method of isolating gems based on Ruby compatibility. Since anything linked against 1.9.1 can (in theory) be linked against 1.9.3, the two share a gem home.

You see where I'm going with this. I posit that per-build gem paths originated in the same paranoia that gave us gemsets, and now that we have Bundler, they can be eschewed. This plugin makes it easy to maintain a unified gem home.

The rbenv communize command blows away (rm -rf style) the lib/ruby/gems directory in the given version and replaces it with a symlink to ~/.rbenv/gems. The opposite command is rbenv sequester, which removes the symlink and recreates it as an empty directory. If you are using ruby-build as a plugin, new installs will be automatically communized. (Problem?)

Waste less time. Waste less space. And go back to using utility gems (like hitch and gem-browse) without having to keep 12 copies up to date.

Installation

mkdir -p ~/.rbenv/plugins
git clone git://github.com/tpope/rbenv-communal-gems.git \
  ~/.rbenv/plugins/rbenv-communal-gems
rbenv communize --all
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].