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!
@dbloete recommended cinderella http://www.atmos.org/cinderella/ to me. It’s powered by rvm, homebrew and chef and builds everything up in ~/Developer. I am completely satisfied, happy, and coding is fun again!
yeah, cinderella makes sense to me, but i don’t like xcode. it reminds me of objective-c all the time, brrr brackets…