How can I switch to ruby 1.9.3 installed using Homebrew?

RubyMacosOsx LionHomebrew

Ruby Problem Overview


I have installed ruby 1.9.3 using hombrew

> brew install ruby

But default 1.8.7 is still used. How can I switch osx to use 1.9.3 as default ruby?

Ruby Solutions


Solution 1 - Ruby

I suggest you take a look at rvm. You can then set it as default with rvm use 1.9.3 --default

But if you are happy with your homebrew install.

Then just change the precedence of directories in the PATH

Here is my /etc/paths

# homebrews should always take precedence
/usr/local/bin

# the default stack
/usr/bin
/bin
/usr/sbin
/sbin

This is important generally for homebrew, else the system version of git, ruby, pg_admin,... will all be used instead of the brew version.

if you say which -a ruby you'll see all the installed rubies, and the precedence in the PATH

eg.

$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby


UPDATE: I now don't think you should change /etc/paths

Instead you need to check which of .profile, .bashrc, or .bash_login is being loaded in your shell, and just add /usr/local/bin to your path.

For me, I only have a .profile. You can create that file if none of those files already exist in your home directory.

# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH

Solution 2 - Ruby

SHORT ANSWER:

after installing ruby via homebrew just do this:

brew link --overwrite ruby

and restart or reopen your Terminal  


LONG ANSWER

So I did a normal install of ruby using homebrew

brew install ruby

that installed fine BUT it was still using the system's default ruby. which I verified by doing:

which ruby 
#/usr/bin/ruby

So as per Matthew Rudy's suggestion, I checked the order of my /etc/paths, and all was good.

Then I decided to do:

which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby

so nothing was broken as such. tried to reinstall ruby again using the homebrew method, and then i found it.

Homebrew mentioned:

Warning: ruby-2.3.1 already installed, it's just not linked

so had to do:

brew link --overwrite ruby

Solution 3 - Ruby

If you'd like to use homebrew to install 1.9.3, you can follow these steps:

$ brew update
$ brew install rbenv
$ brew install ruby-build

Once you have rbenv and ruby-build installed, you can run the following command to get Ruby 1.9.3 installed.

$ rbenv install 1.9.3-p125

Now if you’d like to use 1.9.3 by default, you can run the following command:

$ rbenv global 1.9.3-p125

Solution 4 - Ruby

I had similar situation. I installed ruby using Homebrew. which -a ruby gave me the following output:

#usr/local/bin/ruby
#/usr/bin/ruby

Which means that newly installed version should have been used, but ruby --version still returned the old system version.

I quit terminal (Cmd+Q), and after restart ruby --version returned the correct version. So make sure you restart terminal after installing before trying any other (potentially unnecessary) fixes.

Solution 5 - Ruby

SHORT: Do note what you want to change it for.

If you're on OS X and trying to use Ruby for something like Jekyll, then don't use homebrew because that's what Apple is using for Ruby for and it might not be good to use if you're not sure what you're doing. Instead, use rbenv or RVM.

LESS SHORT: I was trying to switch from the default version to an updated version (from 2.0) to use Jekyll because it required Ruby version 2.2.5 and above. I updated it and version 2.5 was installed, but when I checked "ruby -v", it was still 2.0. Once I finally got around to changing the default version, I wasn't able to install the package I needed because I didn't have write permission. For example, if you come across something like this, then you probably are having the same problem

$ gem install jekyll bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)    
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Solution 6 - Ruby

Ruby was installed by Homebrew at /usr/local/opt/ruby. So, we need to add this path to bash or Zsh.

# Type this to find out which shell you're using (e.g., bash, Zsh)
echo $SHELL

# If you're using Bash (e.g., echo $SHELL returns /bin/bash)
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

# If you're using Zsh
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

Then, source the file

# E.g., if you're using bash
source ~/.bash_profile

Finally, verify ruby's version

ruby -v

Solution 7 - Ruby

In OSX you can change the path using:

sudo nano /etc/paths

And then add a path or change the order.

Solution 8 - Ruby

Just as an alternative approach for anyone else looking for an answer to this - you can set an alias in your .bash_profile e.g

ruby="/usr/local/bin/ruby"

this is how i got around the issue

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAlexey ZakharovView Question on Stackoverflow
Solution 1 - RubyMatthew RudyView Answer on Stackoverflow
Solution 2 - RubyCraig WayneView Answer on Stackoverflow
Solution 3 - RubyFrancis KimView Answer on Stackoverflow
Solution 4 - RubyAndrii ChernenkoView Answer on Stackoverflow
Solution 5 - RubyRichard LinView Answer on Stackoverflow
Solution 6 - RubyCatbuiltsView Answer on Stackoverflow
Solution 7 - RubyRobertView Answer on Stackoverflow
Solution 8 - RubyBn MkView Answer on Stackoverflow