Itâs been just over a year since I posted the article, Install Ruby,
Rails, and PostgreSQL on
OSX
and it still gets quite a bit of traffic. Unfortunately, there have been
a few changes in the install process that have caught people.
Today, I am leaving my PowerBook G4. Itâs being replaced with a MacBook
because the logic board is on the fritz. So, guess what that means? I
get to install Ruby, Ruby on Rails, PostgreSQL on OS X again! I figured
that I would post a revised version of my previous article for those who
may go through this same process in the near future.
::: warning
[WARNING]{.caps}: This post contains some outdated instructions.
Please read Installing Ruby on Rails and PostgreSQL on [OS X]{.caps},
Third
Edition,
which is focused on Installing Ruby on Rails on Leopard.
:::
Step Zero: Install iTerm (optional)
Youâll spend a lot of time in your terminal as a Rails developer. Iâm
not a big fan of Terminal.app as it lacks tabbed
windows and youâll often find me with around
ten tabs open. Iâve been using iTerm
for a few years and itâs definitely improved in the past year and
doesnât seem to crash nearly as often as it used to.
Once installed, I always change the default color scheme as I prefer the
white on black schema. The menus in iTerm are lacking some thoughtful
interaction design, but Iâve figured out the right way to do it (after a
long time of stumbling on it by accident). In iTerm, youâll want to
edit the Default bookmark, which you can access by going to Manage
Bookmarks under the Bookmarks Menu.

Set the Display value to classic iTerm and youâre golden.
Now⌠letâs get to businessâŚ
Without installing Xcode tools from Apple, weâre not going to get very
far. First, youâll need to grab a copy of Xcode, which you can download
on Appleâs Developer Connection site. Itâs almost a 1GB download, so
youâll want to start your download and use your multi-tasking skills and
grab a Viso, read some
blog
posts.
Iâm going to make the assumption here that you know how to install a dmg
on osx. Once this is installed, you can move on to the next step!
Step 2: All Your MacPorts are Belong to Us
MacPorts (formerly known as DarwinPorts) is
a package management system for OS X. This is what weâll use to install
most of the necessary programs to develop and run your Ruby on Rails
applications. If youâre from the Linux or BSD world, you are likely
familiar with similar tools⌠such as: apt-get, port, and yum.
Youâll want to download MacPorts and install the dmg file.

Now that this is installed, we should test it.
With a new terminal, run the following:
$ port version
Version: 1.442
Success! Letâs get goingâŚ
Step 3: Installing the Ruby on Rails development stack
Weâre going to go through a series of small steps, which may take some
time depending on how fast your internet connection and computer is.
Install Ruby and RubyGems
In order to install Ruby, weâre going to use MacPorts with the port
command, which is now available for installing various packages on our
OS X machines.
$ sudo port install ruby rb-rubygems
Itâll probably take a while to download and install Ruby and all of itâs
known dependencies. In the meantime, check out some funny
code. KTHXBYE!
Still waiting for it to install, perhaps you could do something likeâŚ
begin writing a comment on this post, writing your own blog post, watch
a funny video, or
recommend
me.
I walked to Backspace with Gary to get an
Americano⌠and itâs still not done. :-p
(minutes/hours/weeks later)
Okay⌠I trust that it finished installing Ruby and RubyGems without
any hiccups. Letâs test them from our terminal to make sure.
Letâs check the versionâŚ
$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-darwin8.9.1]
Now, letâs make sure that Ruby is working properlyâŚ
$ irb
irb(main):001:0> x = 1
=> 1
irb(main):002:0> puts "wee!!!" if x == 1
wee!!!
Great, weâre on a roll. Letâs get the rest of the stack installed.
Install Ruby on Rails
Weâre going to install Ruby on Rails with the gem command that
installing RubyGems provided.
$ sudo gem install -y rails
This command should produce an output similar to the following.
Successfully installed rails-1.2.3
Successfully installed rake-0.7.3
Successfully installed activesupport-1.4.2
Successfully installed activerecord-1.15.3
Successfully installed actionpack-1.13.3
Successfully installed actionmailer-1.3.3
Successfully installed actionwebservice-1.2.3
Installing ri documentation for rake-0.7.3...
Installing ri documentation for activesupport-1.4.2...
Installing ri documentation for activerecord-1.15.3...
Installing ri documentation for actionpack-1.13.3...
Installing ri documentation for actionmailer-1.3.3...
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for rake-0.7.3...
Installing RDoc documentation for activesupport-1.4.2...
Installing RDoc documentation for activerecord-1.15.3...
Installing RDoc documentation for actionpack-1.13.3...
Installing RDoc documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionwebservice-1.2.3...
Install Rails-friendly gems
Mongrel
If youâre developing with Rails, itâs highly recommended that you use
install and use Mongrel for your
development and production environments. The following command will
install the mongrel and mongrel_cluster gems (including their
dependencies).
$ sudo gem install -y mongrel mongrel_cluster
* Note: Be sure to select the proper platform for
mongrel. (hint: OS X is NOT mswin32)
My terminal output:
$ sudo gem install -y mongrel mongrel_cluster
Password:
Bulk updating Gem source index for: http://gems.rubyforge.org
Select which gem to install for your platform (i686-darwin8.9.1)
1. mongrel 1.0.1 (mswin32)
2. mongrel 1.0.1 (ruby)
3. mongrel 1.0 (mswin32)
4. mongrel 1.0 (ruby)
5. Skip this gem
6. Cancel installation
> 2
Select which gem to install for your platform (i686-darwin8.9.1)
1. fastthread 1.0 (ruby)
2. fastthread 1.0 (mswin32)
3. fastthread 0.6.4.1 (mswin32)
4. fastthread 0.6.4.1 (ruby)
5. Skip this gem
6. Cancel installation
> 1
Building native extensions. This could take a while...
Building native extensions. This could take a while...
Successfully installed mongrel-1.0.1
Successfully installed daemons-1.0.6
Successfully installed fastthread-1.0
Successfully installed gem_plugin-0.2.2
Successfully installed cgi_multipart_eof_fix-2.1
Installing ri documentation for mongrel-1.0.1...
Installing ri documentation for daemons-1.0.6...
Installing ri documentation for gem_plugin-0.2.2...
Installing ri documentation for cgi_multipart_eof_fix-2.1...
Installing RDoc documentation for mongrel-1.0.1...
Installing RDoc documentation for daemons-1.0.6...
Installing RDoc documentation for gem_plugin-0.2.2...
Installing RDoc documentation for cgi_multipart_eof_fix-2.1...
Successfully installed mongrel_cluster-0.2.1
Step 4: Installing the Worldâs Most Advanced Database Server⌠PostgreSQL!
At PLANET ARGON, we develop our applications
on top of PostgreSQL. Iâve long been advocating
the adoption of this awesome open source database in the Rails
community. Just over a year ago, Jeremy Voorhis
(PLANET ARGON alumnus) and I were interviewed on the Ruby on Rails
podcast and had the opportunity to
discuss our preference of PostgreSQL over the alternatives (mysql,
sqlite, firebird, etc.).
Weâre going to install PostgreSQL
8.2 from
MacPorts by running the following command.
$ sudo port install postgresql82 postgresql82-server
While this is installing, you might take a moment to check out some
space
shuttles.
Setting up PostgreSQL
You may have noticed the output of the previous port installation of
PostgreSQL 8.2, suggested that you do the following. Letâs do that
nowâŚ
$ sudo mkdir -p /opt/local/var/db/postgresql82/defaultdb
$ sudo chown postgres:postgres /opt/local/var/db/postgresql82/defaultdb
$ sudo su postgres -c '/opt/local/lib/postgresql82/bin/initdb -D /opt/local/var/db/postgresql82/defaultdb'
Have PostgreSQL start automatically on system start-ups
Unless youâre concerned about extra applications running in the
background, Iâd encourage you to add PostgreSQL to launchd, which will
start it automatically after system reboots.
$ sudo port install ruby rb-rubygems
```0
#### Adding PostgreSQL commands to your \$PATH
For some reason, MacPorts doesn't add the PostgreSQL programs to the
default bash PATH, which means that you can't run `psql`, `pg_dump`, or
`createdb`/@dropdb@ without specifying the full path to where they were
installed. What we'll do is add them to our default terminal profile.
$ sudo port install ruby rb-rubygems
(you can use `mate`, `emacs`, `joe` or any other preferred editor to do
this)
This file gets loaded every time a new terminal session is started.
Let's add `/opt/local/lib/postgresql82/bin` to the end of the value for
PATH.
$ sudo port install ruby rb-rubygems
Save the file and then open a new terminal. To test this, you should get
the following output when you run `which psql`.
$ sudo port install ruby rb-rubygems
#### Creating a new PostgreSQL user
When I'm working on Rails applications in my development environment, I
really don't want to have to specify a username and password in every
`config/database.yml` file for each of our ongoing client projects. When
PostgreSQL was installed, it created a superuser named `postgres`, which
is great, but I'd like one that matches my system username, so that I'm
not prompted at all for a username or password to connect to PostgreSQL.
To do this, we'll use the `createuser` command, which comes with
PostgreSQL. As you can see, I'm creating a new user with superuser
privileges (and will hopefully be the last time I have to do a -U
postgres).
$ sudo port install ruby rb-rubygems
Let's take a quick moment to test this out.
$ sudo port install ruby rb-rubygems
Great, everything looks good here.
We now have a running installation of PostgreSQL with a new user
account. All we need to do now is install the appropriate RubyGem to
allow our Ruby applications to connect to it.
### Installing the Ruby Postgres gem
**UPDATE**: Hydro posted a commented, which lead me to the ruby-postgres
gem.
You can install ruby-postgres gem by running the following command.
$ sudo port install ruby rb-rubygems
Let's take a moment to test that this installed properly.
$ sudo port install ruby rb-rubygems
```7
If this returns true, than we should be good to go. Weâve now built a
professional development environment for working with Ruby on Rails.
Doesnât that feel great?
Test your install
You can look back at my older
post
to walk through the process of testing out your setup with a new Rails
application.
Closing thoughts
I hope that this post has been useful for you. It took me a few hours to
walk through this process and itâs how all of our designers and
developers at PLANET ARGON installs and
configures their development environment.
We also install the following programs on new machines.
- TextMate
- Subversion:
sudo port install subversion
- RSpec:
sudo gem install -y rspec
- âŚamongst other gems that are needed on specific projects
Until next time⌠have fun!
-
Rumor: Mac OS X Leopard will give Terminal.app tabs! ([see
screenshot](http://www.apple.com/macosx/leopard/technology/unix.html))