Rails 3 is out, but version 2 is still widespread.
I have > 1 computers but I prefer to develop on one.
Inevitably the question arises: how can I develop in rails 2 and 3 on 1 machine?


Ruby Version Manager
(RVM) becomes your friend

RVM is a command line tool which allows us to easily install, manage and work with multiple ruby environments from interpreters to sets of gems.
So not only is it convenient for rails 2 vs 3, but any new update that comes out can easily be tested this way.

Most of the following procedure comes from Michael Hartl's Learn Rails by Example that now covers rails 3 and is an excellent tutorial!
Quick procedure how to set it up and use it:

1. install RVM:

∴ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

.. and put this in your profile:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
# This loads RVM into a shell session.

2. install the Ruby instances you want:

$ rvm update --head
$ rvm reload
$ rvm install 1.8.7
$ rvm install 1.9.2

3. define two gemsets, basically self-contained workspaces between which you can toggle

$ rvm --create 1.8.7-p174@rails2tutorial
$ rvm --create use 1.9.2@rails3tutorial

4.  make sure you have gem (Ruby's package manager) installed. It should come with RVM already.
I had some strange issues when installing gems. I think I used somehow the global gem's binary, so you might want to put the RVM's gem binary earlier in your PATH (adding ~/.rvm/rubies/ruby-1.9.2-p0/bin/gem to $PATH in for example .bashrc)
5. now you can easy toggle between the two environments

$ rvm 1.9.2   // toggle to rails 3 environment

$ gem list
..
rails (3.0.0)
..

$ rvm 1.8.7   // toggle to rails 2 environment

$ gem list
..
rails (2.3.8)
..

etc.
You can even run both versions at the same time if you specify a different port

rails 2

$ ruby script/server
=> Booting WEBrick
=> Rails 2.3.8 application starting on http://0.0.0.0:3000

rails 3

$ script/rails  server  -p 3001
=> Booting WEBrick
=> Rails 3.0.0 application starting in development on http://0.0.0.0:3001

Rails 2/ 3 happily running on the same host


OK, this Wednesday a new edition of my Web spotlights ... Apture, itunes ping and more stuff ..


Bob Belderbos

Software Developer, Pythonista, Data Geek, Student of Life. About me