I need to update my Ruby version from 2.0.0 to the latest version. I can not use some gems because my version is not updated. I had used Homebrew to install Ruby some time ago. How can I update my Ruby version?
-
what happens when you type `which rvm` or `which rbenv` in your command line – MageeWorld Jul 05 '16 at 01:36
-
@ChuchaC Please, take a look [here](https://shellzero.wordpress.com/tag/how-to-update-ruby-2-0-to-the-latest-version-on-mac-os-x-yosemite/) and [here](http://stackoverflow.com/q/33883615/1611876) – vhristoskov Jul 05 '16 at 01:44
-
4looks like `brew install ruby` is enough. [check here](https://flinhong.com/2017/10/26/upgrade-ruby-on-mac/) – Venugopal Oct 27 '18 at 06:04
14 Answers
Open your terminal and run
curl -sSL https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer | bash -s stable
For the rvm
command to work, you need to run:
source ~/.rvm/scripts/rvm
Now, run rvm list known
This shows the list of versions of the Ruby interpreter.
Now, run rvm install ruby@latest
to get the latest Ruby version.
If you type ruby -v
in the terminal, you should see ruby X.X.X
.
If it still shows you ruby 2.0.
, run rvm use ruby-X.X.X --default
.
Prerequisites for Windows 10:
- C compiler. You can use http://www.mingw.org/
make
command available otherwise it will complain that "bash: make: command not found". You can install it by runningmingw-get install msys-make
- Add "C:\MinGW\msys\1.0\bin" and "C:\MinGW\bin" to your path environment variable

- 1,795
- 1
- 24
- 39

- 9,763
- 2
- 18
- 28
-
3
-
1
-
89This works on Mac OS to install RVM: `\curl -sSL https://get.rvm.io | bash -s stable --ruby` – zed Dec 28 '16 at 16:04
-
8
-
1RVM (rbenv) seems to be the way to go. You can't upgrade the system ruby bundled with MacOS. – chpopov Jan 28 '17 at 16:35
-
I get Searching for binary rubies, this might take some time. No binary rubies available for: osx/10.12/x86_64/ruby-1.9.3-p551. Continuing with compilation. Please read 'rvm help mount' to get more information on binary rubies. Checking requirements for osx. Installing requirements for osx. Updating system......... Installing required packages: gcc49.. and stuck here forever – coolcool1994 Mar 02 '17 at 03:14
-
1If you get requirements installation failed with status 1 run this code then do the above steps then it works: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" – coolcool1994 Mar 02 '17 at 03:53
-
@chpopov, that's not quite true. For a brew only solution to update ruby see my [answer below](http://stackoverflow.com/a/42286604/2628257) – Sergio Basurco May 10 '17 at 07:49
-
-
1This isn't quite a good solution, because if you want to upgrade ruby version in future, you should do that through rvm. Clearer solution is to install and lead ruby latest version through the brew. Managing 1 tool is easier than 2. Answer below can help on that. – hamsternik Nov 02 '17 at 15:28
-
After updating using the 'rvm install ruby-2.4.2' command, when I type 'ruby -v' - I see I am running the current version (I don't think I need to do the other steps of setting the default anymore) – Booger Nov 12 '17 at 14:04
-
1I need to update Ruby because Brew asks me to. However, ruby uses brew, so I get: Homebrew must be run under Ruby 2.3! You're running 2.0.0.... Any solution ? – Javier Delgado Nov 29 '17 at 11:04
-
1to make it work at fish shell, add additional command: `curl -L --create-dirs -o ~/.config/fish/functions/rvm.fish https://raw.github.com/lunks/fish-nuggets/master/functions/rvm.fish` – weiheng Nov 29 '17 at 11:49
-
11piping curl output straight to execution is a security nightmare waiting to happen. – arp Jan 08 '18 at 11:54
-
-
You are encouraging people to run a cURL'd script. (piping curl output) Do you think that's smart? – Maarten Wolzak Feb 07 '18 at 15:47
-
1
-
-
Wanted to add that `source /Users/[your username]/.rvm/scripts/rvm` in all open terminals should also allow rvm to work! – tf.rz Nov 14 '18 at 17:45
-
-
As a first step install GPG keys used to verify installation package: `gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB` – Won Jun Bae Jan 26 '20 at 21:36
-
I got this message: ```RVM is not a function, selecting rubies with 'rvm use ...' will not work```. – ciurlaro Jul 20 '20 at 13:35
-
Why this kind of answer keep poping as "Correct"? 1) Piping some online script directly to bash? Are you insane? 2) There are other far more easier and safe solutions (brew, for instance). – JCKödel Jan 20 '21 at 18:23
-
I had to add ` --auto-dotfiles` as suggested by the instructions, and run with `sudo`. – Ibrahim.H Oct 07 '22 at 18:12
-
After the installation you don't need to restart Terminal to start using `rvm`. You should only need to execute the indicated `source` command, which should work with: `source ~/.rvm/scripts/rvm`. – Ricardo Barroso Nov 21 '22 at 19:31
Brew only solution
A better solution
From the comments (kudos to Maksim Luzik), I haven't tested but seems like a more elegant solution:
After installing Ruby through brew, run the following command to update the links to the latest Ruby installation:
brew link --overwrite ruby
A solution
Using brew is enough. It's not necessary to install rvm and for me it just complicated things.
By brew install ruby
you're actually installing the latest (currently v2.4.0). However, your path finds 2.0.0 first. To avoid this just change precedence (source). I did this by changing ~/.profile
and setting:
export PATH=/usr/local/bin:$PATH
After this, I found that the bundler gem was still using version 2.0.0. Just install it again: gem install bundler

- 30,738
- 21
- 105
- 131

- 3,488
- 2
- 22
- 40
-
8Exactly what I was looking for, thanks. If I was a ruby dev then rvm would make sense, but I'm not, so this is perfect. – Max Jun 23 '17 at 03:17
-
4
-
12or after installing ruby through brew, run following command to update the links to the latest ruby installation: `brew link --overwrite ruby` – Maksim Luzik Aug 31 '17 at 14:41
-
2instead of `overwrite` ruby version, you can just write `brew unlink ruby && brew link ruby` – hamsternik Nov 02 '17 at 15:25
-
1Late to the party but definitely one of the better guests - worked flawlessly. – Jan Nov 19 '17 at 19:12
-
-
14@MaksimLuzik 's solution does not work for me in MacOS. `brew link --overwrite ruby` leads to `Warning: Refusing to link macOS-provided software: ruby` – Rafael Beckel Jul 03 '19 at 07:42
-
Not sure what is is about @rafael-beckel, but just guessing here. How is brew installed? Might be related to sudo rights? – Maksim Luzik Jul 07 '19 at 16:49
-
-
this command to add to PATH worked for me (which is also suggested by brew): `echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc` – azizbro Jan 29 '23 at 02:33
-
1If your mac refuses to link ruby, try `brew link --overwrite ruby --force`. This worked for me. – Prasannjeet Singh Feb 11 '23 at 14:07
I recommend rbenv* https://github.com/rbenv/rbenv
* If this meets your criteria: https://github.com/rbenv/rbenv/wiki/Why-rbenv?:
rbenv does…
- Provide support for specifying application-specific Ruby versions.
- Let you change the global Ruby version on a per-user basis.
- Allow you to override the Ruby version with an environment variable.
In contrast with RVM, rbenv does not…
- Need to be loaded into your shell. Instead, rbenv's shim approach works by adding a directory to your
$PATH
.- Override shell commands like
cd
or require prompt hacks. That's dangerous and error-prone.- Have a configuration file. There's nothing to configure except which version of Ruby you want to use.
- Install Ruby. You can build and install Ruby yourself, or use ruby-build to automate the process.
- Manage gemsets. Bundler is a better way to manage application dependencies. If you have projects that are not yet using Bundler you can install the rbenv-gemset plugin.
- Require changes to Ruby libraries for compatibility. The simplicity of rbenv means as long as it's in your
$PATH
, nothing else needs to know about it.
INSTALLATION
Install Homebrew http://brew.sh
Then:
$ brew update $ brew install rbenv ruby-build # Add rbenv to bash so that it loads every time you open a terminal echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile source ~/.bash_profile
$ rbenv install --list Available versions: 1.8.5-p113 1.8.5-p114 […] 2.3.1 2.4.0-dev jruby-1.5.6 […] $ rbenv install 2.3.1 […]
Set the global version:
$ rbenv global 2.3.1 $ ruby -v ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
If you are not showing the updated version then
$ rbenv rehash
Set the local version of your repository by adding .ruby-version
to your repository's root directory:
$ cd ~/whatevs/projects/new_repo $ echo "2.3.1" > .ruby-version
For OS X, visit this link.

- 2,395
- 2
- 24
- 34

- 3,226
- 1
- 22
- 25
-
3@ChuchaC No prob. But before you do, this is from the rbenv readme: _"Compatibility note: rbenv is incompatible with RVM. Please make sure to fully uninstall RVM and remove any references to it from your shell initialization files before installing rbenv." — https://github.com/rbenv/rbenv#installation_ – SoAwesomeMan Jul 06 '16 at 02:33
-
20didn't helped. Still getting standard 2.0.0 version for `ruby -v` after `rbenv global ...` – tuxSlayer Sep 08 '16 at 10:57
-
10There's one additional step after `brew install rbenv` Run `rbenv init` and add one line to .bash_profile as it states. After that reopen your terminal window, do `rbenv install 2.3.1`, `rbenv global 2.3.1` and rbenv will do its work – SGI Sep 30 '16 at 12:01
-
-
8Probably late but for future references for people who encountered the same issue as @tuxSlayer , `rbenv rehash` after `rbenv global` worked for me – Sean Feb 01 '17 at 03:01
-
2After `rbenv init`, `ruby -v` outputs the correct version 2.1.2, but bundle runs encounters some error like this `paperclip-5.0.0.beta1 requires ruby version >= 2.1.0, which is incompatible with the current version, ruby 2.0.0p648`. Finally manage to get it work with a run of `rbenv rehash`. Thanks @Sean – James Apr 14 '17 at 03:43
-
Open Terminal:
sudo gem update --system
It works!

- 36,322
- 27
- 84
- 93

- 1,017
- 7
- 5
-
4This does indeed seem to work, and is a unmeasurably more straight forward than the other answers. But when installing some gems (listen for example) they complain that the version is lower than required. – William Isted Nov 09 '16 at 09:38
-
12
-
Brew only solution [here](https://stackoverflow.com/a/42286604/2628257) – Sergio Basurco Jun 21 '17 at 08:02
-
5I was misled by this answer too. It "works" in that no errors are generated when you run it from the console. However, it does not update Ruby. It updates Ruby Gems. Follow one of the other answers to update Ruby (using OS X Sierra). – informaton Aug 14 '17 at 19:40
-
Tried it, but i got the following error: ```ERROR: Error installing rubygems-update: rubygems-update requires Ruby version >= 2.3.0. ERROR: While executing gem ... (NoMethodError) undefined method `version' for nil:NilClass ``` – ciurlaro Jul 20 '20 at 13:26
A fast way to upgrade Ruby to v2.4+
brew upgrade ruby
or
sudo gem update --system

- 30,738
- 21
- 105
- 131

- 8,614
- 7
- 64
- 88
-
7This appears to do a ton of stuff, but upgrading ruby isn't one of them. It terminates with: `/usr/local/Homebrew/Library/Homebrew/brew.rb:12:in '
': Homebrew must be run under Ruby 2.3! You're running 2.0.0. (RuntimeError)` – nkoren Jan 05 '18 at 16:06 -
1This is the correct and best way to upgrade ruby version using brew. – user1101733 Apr 23 '18 at 20:12
-
3Doesn't work for me. `ERROR: While executing gem ... (Errno::EPERM) Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/gem` – Sébastien Loisel Mar 20 '20 at 10:14
-
@SébastienLoisel can you please give some detail about your OS, command etc. – fatihyildizhan Mar 20 '20 at 10:15
-
1@fatihyildizhan apparently ruby/gems/etc is in a semibroken state on Mavericks. I've resolved my issues by upgrading to Catalina. I don't remember all the errors I had, but there were multitudes. I can't remember if I was trying to upgrade cocoapods or gems or what, but it was essentially hopeless. – Sébastien Loisel Mar 21 '20 at 14:05
You can specify the latest version of Ruby by looking at Download Ruby.
Fetch the latest version:
curl -sSL https://get.rvm.io | bash -s stable --ruby
Install it:
rvm install 2.2
Use it as default:
rvm use 2.2 --default
Or run the latest command from ruby:
rvm install ruby --latest
rvm use 2.2 --default

- 30,738
- 21
- 105
- 131

- 3,022
- 22
- 16
Use:
brew install rbenv ruby-build
Add rbenv to Bash so that it loads every time you open a terminal:
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile
Install Ruby
rbenv install 2.6.5
rbenv global 2.6.5
ruby -v
Link to the source page.

- 30,738
- 21
- 105
- 131

- 579
- 4
- 10
-
This "rbenv" may refer to [SoAwesomeMan's answer](https://stackoverflow.com/questions/38194032/how-can-i-update-ruby-version-2-0-0-to-the-latest-version-in-mac-os-x-v10-10-yo/38194231#38194231). – Peter Mortensen Apr 12 '23 at 18:55
In case of the error “Requirements installation failed with status: 1.”, here's what to do:
Install Homebrew (for some reason it might not work automatically) with this command:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Then proceed to install rvm again using
curl -sSL https://get.rvm.io | bash -s stable --ruby
Quit, reopen Terminal, and then:
rvm install 2.2
rvm use 2.2 --default

- 30,738
- 21
- 105
- 131

- 710
- 8
- 18
In terminal : rvm gemset use global

- 9
- 1
-
9While this code snippet may be the solution, [including an explanation](//meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) really helps to improve the quality of your post. Remember that you are answering the question for readers in the future, and those people might not know the reasons for your code suggestion. – Adam Apr 13 '17 at 15:21
I ended up using the steps below due to React Native 0.70 and macOS v12 (Monterey).
brew install ruby
Edit:
open -e ~/.zshrc
Set the $PATH environment variable. Add this at the end of your ~/.zshrc file. On Mac Intel:
if [ -d "/usr/local/opt/ruby/bin" ]; then
export PATH=/usr/local/opt/ruby/bin:$PATH
export PATH=`gem environment gemdir`/bin:$PATH
eval "$(rbenv init -)"
fi
Apple silicon
if [ -d "/opt/homebrew/opt/ruby/bin" ]; then
export PATH=/opt/homebrew/opt/ruby/bin:$PATH
export PATH=`gem environment gemdir`/bin:$PATH
eval "$(rbenv init -)"
fi
Don't want brew to update your version?
brew pin ruby

- 30,738
- 21
- 105
- 131

- 18,750
- 9
- 86
- 81
Use
sudo gem update --system
And simply restart the PC.

- 30,738
- 21
- 105
- 131

- 1,562
- 1
- 11
- 9
you can use the steps mentioned in https://snyk.io/blog/how-to-install-ruby-in-mac-os/
worked great for me, macOS Ventura 13.3.1 (a) (22E772610a)

- 2,667
- 1
- 26
- 50
The simplest way is definitely to enter the following command in the terminal:
sudo gem update --system
You can add the flag --no-document
if you do not want to download the documentation. Here is sample output after running the command:
sudo gem update --system
Password:
Updating rubygems-update
Fetching: rubygems-update-2.6.8.gem (100%)
Successfully installed rubygems-update-2.6.8
Parsing documentation for rubygems-update-2.6.8
Installing ri documentation for rubygems-update-2.6.8
Installing darkfish documentation for rubygems-update-2.6.8
Installing RubyGems 2.6.8
RubyGems 2.6.8 installed
Parsing documentation for rubygems-2.6.8
Installing ri documentation for rubygems-2.6.8
------------------------------------------------------------------------------
RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/gem
Ruby Interactive (ri) documentation was installed. ri is kind of like man
pages for ruby libraries. You may access it like this:
ri Classname
ri Classname.class_method
ri Classname#instance_method

- 30,738
- 21
- 105
- 131

- 39
- 1
-
2Isn't this the same as the [answer above](https://stackoverflow.com/a/40425616/2254698)? I'm curious why the number of downvotes here versus upvotes there? Is it because of the duplicate answer, or is it because people did not realize soon enough, that the earlier solution was also just for rubygems, not Ruby? – informaton Aug 14 '17 at 19:27
brew link --overwrite --force ruby

- 111
- 1
- 12
-
5Please don't post code-only answers. The main audience, future readers, will be grateful to see explained *why* this answers the question instead of having to infer it from the code. Also, since this is an old, well answered question, please explain how it complements *all* other answers. – Gert Arnold Dec 18 '22 at 19:56