rbenv: How to switch to another Ruby version

Updated . Posted . Visible to the public.

If you want to switch to another ruby versions, you have several options, depending on what you want: Do you want to switch temporarily, per project, or globally?
Here is a short guide.

Unlike RVM, rbenv does not offer a command like rvm use. By default, it respects your project's .ruby-version file.

If you need to change manually, you have several options:

  1. rbenv shell
  2. rbenv local
  3. rbenv global

You probably want rbenv shell.

How to switch your Ruby version temporarily: rbenv shell

In case you only want to switch temporarily, you have the option to change your Ruby version on your current shell:

$ ruby -v
ruby 1.9.3p484 (...)

$ rbenv shell 2.0.0-p353
$ ruby -v
ruby 2.0.0p353 (...)

Background: This actually sets the RBENV_VERSION environment variable in your terminal session.

Note that your terminal session will no longer respect any .ruby-version files. You need to run rbenv shell --unset to enable the auto switch again.

Switching per project: rbenv local

This looks like rbenv shell...

$ ruby -v
ruby 1.9.3p484 (...)

$ rbenv local 2.0.0-p353
$ ruby -v
ruby 2.0.0p353 (...)

...but actually writes that version to a .ruby-version in your current directory. Use this only when you want to change the Ruby version on a project, not to change it temporarily (as you'd change your project's file or clutter whatever directory you are currently in with that file).

How to switch your Ruby version globally: rbenv global

This will also change your Ruby version, but only the one you are using whenever no other version is specified, e.g. via a .ruby-version file or RBENV_VERSION variable.

$ ruby -v
ruby 1.9.3p484 (...)

$ rbenv global 2.0.0-p353
$ ruby -v
ruby 2.0.0p353 (...)

$ echo "1.9.3p484" > .ruby-version
$ rbenv global 2.0.0-p353
$ ruby -v
ruby 1.9.3p484 (...)

Note that this is really your global Ruby version, so calling that on one terminal session will affect other terminal sessions as well -- unless they are inside a directory tree using .ruby-version, of course.

Arne Hartherz
Last edit
Rebecca
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2014-01-23 12:09)