Ruby on Rails on OS X Yosemite

Recently I decided to replace my nearly seven-year-old MacBook Pro with a brand-new one. As I sometimes do in situations like this, I decided to set everything up from scratch rather than restoring from another device or a backup. Since I was running Mavericks on my old laptop, this meant getting a development environment going on a new version of OS X. It was a straight-forward process but I decided to document it for my own reference and share it in case someone else can benefit from it.

General Setup

The first thing you need for development on a Mac is the Xcode command-line tools. Fortunately, installing them is quite easy these days:

xcode-select --install # then click “Install”

Using a package manager makes everything a little easier (in my opinion), and I always reach for Homebrew:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor # and then follow the instructions (if any)

I ran into permission errors the first time I tried to install any packages so I had to chown the /usr/local directory to clear those up.

# You might need to do this too
sudo chown -R $(whoami) /usr/local

Once Homebrew is in place you can install Git and Node.js. Even though I develop in Rails, I constantly find myself in need of Node for front-end work. Also, if you plan on using GitHub’s Atom editor you’ll want Node to enable its command line tools. (For whatever reason, installing node didn’t expose npm to the $PATH, but installing it as npm did.)

brew install git npm # not ‘node’

# Go ahead and do this if you know you’ll need Grunt
npm install -g grunt-cli

You might elect to install Postgres with Homebrew as well, which I have done in the past. This time, though, I decided to give Postgres.app a try. After downloading and dragging to the Applications folder, I updated my $PATH to enable command-line usage:

# in ~/.bash_profile
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Ruby Setup

Ever since I started learning Ruby and Rails I’ve used RVM. It’s also what my box at work is running. But this time I decided to give rbenv a shot instead. I know other devs who use it, and it’s actually what the Rails team recommends, so I figured it wouldn’t be a bad idea to try it.

Setting up rbenv is quite simple. I recommend using Homebrew to install it, and unless you plan to manually compile your Ruby versions from source I’d recommend the ruby-build plugin:

brew install rbenv ruby-build

# in ~/.bash_profile
export RBENV_ROOT=/usr/local/var/rbenv
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

I elected to install a few additional plugins as well:

mkdir $RBENV_ROOT/plugins

# gem-rehash
git clone https://github.com/sstephenson/rbenv-gem-rehash.git \
$RBENV_ROOT/plugins/rbenv-gem-rehash

# default-gems
git clone https://github.com/sstephenson/rbenv-default-gems.git \
$RBENV_ROOT/plugins/rbenv-default-gems

# binstubs
git clone https://github.com/ianheggie/rbenv-binstubs.git \
$RBENV_ROOT/plugins/rbenv-binstubs

Regardless of whether you do that or not, you should be all set up to install and run a version of Ruby. I downloaded 2.1.1 for this blog, created .ruby-version, and generated a binstub for Jekyll.

rbenv install 2.1.1
rbenv local 2.1.1 # creates .ruby-version

bundle binstubs jekyll

That’s it! It seems like getting up and running with Rails gets easier all the time. And that’s certainly a good thing. Happy coding.


Shameless Plug: Are you a Rails developer? Are you interested in work that matters? We’re hiring!