rbenv: How to switch to another Ruby version (temporarily, per project, or globally)
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:
rbenv shell
rbenv local
rbenv global
You probably want rbenv shell
.
Temporarily: rbenv shell
Changes 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.
Per project: rbenv local
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).
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.