This article explains why you should avoid using the version of Ruby bundled with Mac OS X and should instead install your own version of Ruby with RVM, the Ruby Version Manager.
Apple bundles the Ruby programming language with OS X. However, the main caveat for using the bundled version, called the system Ruby, is that Apple bundles Ruby for it’s own use. Therefore, it’s best not to make changes to the system Ruby.
You’ll know when you’re about to change the system Ruby when you need to prefix a gem installation with sudo
, for example:
sudo gem install jekyll
Another reason for not using the system Ruby is that it’s often several versions behind the latest stable version.
A better alternative to using the system Ruby is to install Ruby with RVM, the Ruby Version Manager. RVM is a tool for installing different versions of Ruby itself. RVM has the following advantages:
sudo
to install gems.To check that you’re currently using the system Ruby, open Terminal and type the following:
which ruby
If you’re using the system Ruby, OS X will respond with:
/usr/bin/ruby
You can check which version of Ruby OS X is using with:
ruby -v
The RVM install page has comprehensive instructions for installing RVM that work on Mac OS X. I’ll provide the steps I used here.
The first step is to install the mpapis public key. However, as the install page notes, you might need gpg. Mac OS X doesn’t ship with gpg so before installing the public key, you’ll need to install gpg. I installed gpg with Homebrew:
brew install gnupg
After you’ve installed gpg, you can install the mpapis public key:
gpg --keyserver hkp://keys.gnupg.net
--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
I chose to install RVM with the latest stable version of Ruby, which at the time was 2.2.0:
\curl -sSL https://get.rvm.io | bash -s stable --ruby
After the installation completes, close the Terminal window and open a new one to make sure that Terminal picks up any environment changes.
You can list the versions of Ruby available to RVM with rvm list
:
rvm rubies
=* ruby-2.2.0 [ x86_64 ]
# => - current
# =* - current && default
# * - default
The rvm use
command selects a version of Ruby:
rvm use 2.2.0
You can check that you’re using an RVM-managed version of Ruby with:
which ruby
OS X now responds with:
/Users/jeff/.rvm/rubies/ruby-2.2.0/bin/ruby
which tells us we’re using version 2.2.0 and that version 2.2.0 has been installed in my home folder away from the system Ruby. You can confirm this by asking Ruby itself with:
ruby -v
The RVM-managed version of Ruby responds with:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
As I mentioned earlier, gems installed with RVM-managed versions of Ruby are located with the Ruby. You can check where gems will be installed with:
gem env
The following lines of output shows that gems will be installed in the folder XXX.
- GEM PATHS:
- /Users/jeff/.rvm/gems/ruby-2.2.0
- /Users/jeff/.rvm/gems/ruby-2.2.0@global
To find out where a particular gem is installed, use the gem which
command. For example, gem which jekyll
locates the Jekyll gem:
/Users/jeff/.rvm/gems/ruby-2.2.0/gems/jekyll-2.5.3/lib/jekyll.rb