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:
rbenv shell
rbenv local
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.