Automatically run Ruby scripts with "bundle exec" (but only when appropriate).
Latest commit a3ddc6d Jun 3, 2016 @gma Support Zsh
Zsh doesn't split a list of words into an iterable in the same way
Bourne shells do, by default. This patch (originally provided by @wk8 on
GitHub) fixes that by temporarily enabling the right behaviour.
Failed to load latest commit information.
.gitignore Initial import. Jan 26, 2010 Dropped rbenv integration. Mar 16, 2012 Support Zsh Jun 3, 2016


bundler is a great way to manage the gem dependencies in your Ruby project.

One of bundler's nifty features is the bundle exec command which allows you to run an executable (such as rake) in the context of your bundled gem dependencies. In other words, you'll only be able to access the gems that you've told bundler that you want to use.

To run a command in this way you need to prefix it with 'bundle exec', like so:

$ bundle exec rake my:task

It's something that you really ought to be doing whenever you run a ruby script within a bundled project, but, alas, it can become a chore.

Enter bundler-exec, which takes care of automatically pre-pending "bundle exec" to the beginning of common Ruby commands.


  1. Copy to ~/
  2. Source it from your ~/.bashrc file.

For example:

$ curl -L > ~/
$ echo "[ -f ~/ ] && source ~/" >> ~/.bashrc

Er, that's it...

You can get bundler by installing the gem:

$ gem install bundler

See for more about bundler.


To check that bundler-exec has been installed properly, use the type shell built-in command to see what it will do when you run ruby. It should tell you it's an alias, like this:

$ type ruby
ruby is aliased to `run-with-bundler ruby'

If so, whenever you run ruby (or any of the other commands listed in the BUNDLED_COMMANDS variable) you'll actually be running it with bundle exec.

If you want to run one of these commands without bundler exec you can use which to find the full path to executable and then run it, like this:

$ $(which ruby) -e 'puts "hello"'