A Blog

RVM Tip When Working on Rails With Multiple Consoles

September 09, 2010

I’ve been meaning to test out Rails 3 ever since it was finally released. But I didn’t want to deal with the issues of having concurrent versions of Rails 2.3.x and 3 running side by side. The word on the street is that RVM handles them both well.

RVM itself is relative easy to set up. Although, I should note that trying to run the source-head version (from github) on my laptop caused errors… Running the latest rvm tarball did the trick though. (#2 on that list linked)

I installed both Ruby 1.8.7 and 1.9.2 in RVM, and installed the Rails 3 gem on the 1.9.2 install. Everything went smoothly here.

Now to sidestep for just a second: I like to have multiple terminal tabs running when developing in Rails. One just runs the local dev server, one will run autospec (or the Rails console), and another [one or two] is the utility one for running various shell commands.

So I was in a second terminal tab and wanted to just create a new scaffold with:

> rails generate scaffold User name:string email:string

This generated a brand new rails app in a new folder called ‘generate’. What gives? I double and triple checked my syntax to make sure it was correct. It was. I stopped the web server in the other tab and ran the same command there. Bingo, worked like a charm. Argh!

Finally the light turned on. You need to run RVM in each tab/window. Since RVM is a virtual environment, that state doesn’t persist in different sessions.

> rvm use 1.9.2
> rails generate scaffold User name:string email:string

Makes sense once you realize what’s going on, but was rather frustrating before that point was reached.

Scott Williams

Written by Scott Williams who lives and works in sunny Phoenix, AZ. Twitter is also a place.