Rails, getting started without the hassle

I just changed jobs and am now a Rails developer at “tolingo.com”:http://tolingo.com, which is an online translation broker. When I started out working on my new desk, I had to setup my iMac development environment. There are tons of articles of “how to compile/install/run stuff like MySQL”:http://hivelogic.com/articles/ruby-rails-leopard, to get you started on OS X, but I think all one really needs is “Homebrew”:http://mxcl.github.com/homebrew/ and “RVM”:http://rvm.beginrescueend.com/.

h2. Homebrew

Homebrew is a Ruby based packaging tool for Mac and once you start using it, you immediately hate yourself for having wasted time on “MacPorts”:http://www.macports.org/…

“Homebrew is the easiest and most flexible way to install the UNIX tools Apple didn’t include with OS X.”

This quote is from the official website and I guess they are absolutely right!

h3. Formula

Homebrew is build around formulas. They describe how a package should be loaded from the web and installed on your system. It also cares about package dependencies, paths and all the other ugly stuff:

require 'formula'

class Wget < Formula
  homepage 'http://www.gnu.org/wget/'
  url 'http://ftp.gnu.org/wget-1.12.tar.gz'
  md5 '308a5476fc096a8a525d07279a6f6aa3'

  def install
    system "./configure --prefix=#{prefix}"
    system 'make install'
  end
end

You can easily install packages from the shell with _brew_:

brew install wget

Homebrew puts all the packages into _'/usr/local'_, so that it won't interfer with other components of your system. To get your packages working, you need to include it into your _$PATH_. If you have any problems running something, Homebrew comes with the _doctor_ command, that scans for problems in your setup!

h3. Installation

Just download Homebrew to your system and update once a while:

# install homebrew via curl
sudo mkdir -p /usr/local && sudo chown -R $USER /usr/local && curl -Lsf http://bit.ly/9H4NXH | tar xvz -C/usr/local --strip 1

# update homebrew
brew update

h3. Git, MySQL, Sphinx and more

What else do you need? Just _search_ for it or get more infos with _info_!

These are the packages that I needed for development:

# install mysql and set it up
brew install mysql
mysql_install_db
# add mysqld as launch agent
cp /usr/local/Cellar/mysql/#{MYSQL_VERSION}/com.mysql.mysqld.plist ~/Library/LaunchAgents
launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

# install git
brew install git git-flow

# add git bash completion (find path to your git with 'brew info git')
ln -s /usr/local/Cellar/git/#{GIT_VERSION}/etc/bash_completion.d/git-completion.bash ~/.git-completion.bash
source .git-completion.bash

# install sphinx search-deamon
brew install sphinx

# aspell with all spellings
brew install aspell --all

# libxml and imagemagick for sprites
brew install libxml2 imagemagick

h2. RVM the Ruby Version Manager

RVM is a command line tool for managing your local Ruby environments, you can get some more information on the "RVM homepage":http://rvm.beginrescueend.com/ and in "earlier articles":http://blog.nofail.de/tag/rvm/.

Quick start with installing RVM to your machine:

# install rvm via curl !!! FOLLOW RVM INSTRUCTIONS !!!
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

# download and compile latest 1.8.7
rvm install 1.8.7

# create a .rvmrc file in your app's base directory
echo "rvm use 1.8.7@#{YOUR_APP} --create" > #{YOUR_APP}/.rvmrc
# execute it by cd-ing to your app's directory
cd #{YOUR_APP}

Now you can work on your app with a custom gem environment. Unless you are using "Bundler":http://gembundler.com/, this is probably what you want for installing and removing gems painlessly.

h3. Cucumber with Celerity

Behavior driven development with "Cucumber":http://cukes.info/ works nicely with "Celerity, a JRuby implementation of a headless browser using HtmlUnit":http://celerity.rubyforge.org/ and it's companion a Ruby wrapper called "Culerity":http://github.com/langalex/culerity. Culerity has recently been updated with some configuration points for registering your local JRuby environment:

# jruby config für culerity (from http://rvm.beginrescueend.com/integration/culerity/)
rvm install jruby
rvm use jruby@celerity --create
gem install celerity
rvm wrapper jruby@celerity celerity jruby
# add to .profile
export JRUBY_INVOCATION="$(readlink "$(which celerity_jruby)")"

If you are experiencing any weird _Broken Pipe_ errors (like me), have a look at "this issue":http://github.com/langalex/culerity/issues/#issue/29.

This is just an example of how you can setup your Rails development environment. Comments on this topic are appreciated!

2 thoughts on “Rails, getting started without the hassle

  1. phoet Post author

    yeah, cinderella makes sense to me, but i don’t like xcode. it reminds me of objective-c all the time, brrr brackets…

Comments are closed.