kelan.io

Using Bundler for Playing with Ruby Gems

I often want to experiment with a Ruby gem, but don’t want to install it (and all its dependencies) globally on my system. So, I use Bundler to install and use it locally in the project directory. That way I can easily clean the whole thing up when I’m done.

For example, I recently wanted to check out Octopress 3, to see what the genesis-theme looks like.

Just start in an empty project dir, and create a Gemfile that looks like:

source 'https://rubygems.org'

gem 'octopress', '~> 3.0'
group :jekyll_plugins do
  gem 'octopress-genesis-theme'
end

Now install the gems using bundler. The --path=vendor is the key that installs everything into the local dir (in a subdir named vendor, to be specific). Once you run it this way once, it creates a .bundle/config file that remembers this setting for subsequent invocations of bundle.

$ bundle install --path=vendor
Resolving dependencies...
Using execjs 2.5.2
Using autoprefixer-rails 2.2.0.20140804
Using blankslate 2.1.2.4
# lots more gems and versions…
Bundle complete! 2 Gemfile dependencies, 61 gems now installed.
Bundled gems are installed into ./vendor.

Now you just have to prefix the commands that want to use the gem exectuables with bundle exec.

$ bundle exec octopress new . --force
$ cat >> _config.yml
exclude: [vendor]
^D
$ bundle exec jekyll serve

Then, when I’m done tinkering, I can delete the whole project dir, and not be left with a bunch of cruft installed in my system.