I’ve written a follow-up to this post for using the Rails 3.1 beta with RVM.
A couple of weeks ago at a get-together of local developers, someone mentioned he hadn’t checked out Rails 3 yet because he didn’t want pre-release software mucking up his usual development environment. I don’t blame him–this is a reason I also put off checking out earlier releases of Rails 3. That was before I got a new computer and set up Ruby from scratch, using the why-didn’t-someone-think-of-this-sooner Ruby Version Manager (RVM). Simply put, RVM lets you have multiple versions of Ruby on your computer, and keeps these Rubies and any gems you install in your user account. No root access or sudo
is required to install.
In addition to managing Ruby versions, RVM gives you a second killer feature–the ability to create gemsets, which are exactly what they sound like. Each Ruby version managed with RVM has its own set of gems configured to work with it, and each Ruby version can have multiple gemsets applied to it. Each gemset is distinct, so you can experiment with different versions of Ruby and different versions of gems without affecting your go-to configurations. In other words, you’ve got no excuses to not be tinkering with Rails 3 right now.
The tutorials on the RVM website cover all of the steps to get going, but they may require a little hunting and can be daunting if you don’t know what you’re doing. I use Mac OS X 10.6 for development; if you do as well then these steps should work for you. Steps 2 through 5 should fly for you if you’re using a Linux distribution. If you’re using Windows, check out Pik for similar functionality (I have no experience with Pik myself).
Depending on the installation method you choose, you may be good to go with a stock installation of your operating system. You may want to install Git if you haven’t already to retrieve the latest versions of RVM or Rubies. I recommend Homebrew for installing Git and other software packages for Mac OS X, though if you’d prefer a double-click installer there’s Git for OS X.
The RVM installation documentation lists three options. I used the first option (installing from the GitHub repository via a single command). I’m not sure why installing from the gem is not recommended, other than you’re apt to not get the latest version. For what it’s worth, the Railscasts episode on using RVM with Rails 3 Beta installs from GitHub. So, going that route, type:
The real work begins with the post-installation steps (scroll down about halfway on the installation documentation). Locate your profile (by default on a Mac, that’s .bash_profile
inside your home directory; you may also have settings like $PATH
in this file) and paste the following line at the bottom:
You can type the source
command shown in the instructions, or open a new shell, to begin using RVM.
To install a particular version of Ruby, do like the following:
Then switch to that Ruby with
The RVM documentation provides a complete list of Ruby interpreters available
See a list of all your installed Rubies with
And pick a default Ruby interpreter with
Which Rubies should I install? That depends on your particular development needs. I have 1.8.7, 1.9.1, and REE (Ruby Enterprise Edition) installed.
At this point you can install Rails 2.3.8 and any other gems in your default environment, and continue using them for your day-to-day Rails development. You can also create a compartmentalized area called a gemset for experimenting with Rails 3.
The basic syntax to get started is
where rails3
is your gemset’s name. You can use another version of Ruby if you’d prefer—in fact, it might not be a bad idea to start getting familiar with Ruby 1.9.1 as long as you’re enabling your computer to handle multiple Rubies and Rails versions.
You can copy gemsets from Ruby to Ruby; see the RVM documentation for details.
Now type
to switch to the new gemset. A quick
shows the gemset is empty; change that with
to install the current pre-release version of Rails.
Read the RVM documentation on gemsets for more usage examples for gemsets–but for all intents and purposes, we’re ready to roll with Rails 3.
Update: Reader Sutto points out that you can create and switch to a new gemset in one fell swoop with
If you’re using Passenger on your development computer, and want to keep using it with RVM, you’ll need to make a few tweaks to your web server configuration. In my case, I’m using the default installation of Apache in Mac OS X. Looking at the documentation on integrating Passenger with RVM, you’ll see there are a few steps involved here. It confused me a little the first time I ran through it, but here’s the rundown:
First, switch to the Ruby version you want to use with Passenger, if necessary. In the documentation they’re using REE but you can use any Ruby you’ve installed with RVM.
Next, install the Passenger gem as usual, with the exception that you’ll run the script to install the Passenger module for the web server via rvm (I guess I’m a “tomahawk chucker”).
Finally, edit your web server configuration file (in the case of Apache on OS X, that’s /etc/apache2/httpd.conf
). This is what I wound up having to do to get mine to work:
Did you copy and paste the above and it didn’t work? Remember, RVM installs Rubies and gems inside your home folder, so these settings point to those files. Unless your account name is also everydayrails
you’ll need to update these paths accordingly.
Reboot Apache and you should be good to go. For the record, I’m about to switch my server settings to use REE instead of 1.8.7, to better reflect a production environment.
First, install MySQL the way you normally would (if you haven’t already). You can use Homebrew, or you can download an installer for your operating system. I went with the latter–if you’re using Leopard or Snow Leopard, make sure you download and install the 64-bit version.
Then, follow the instructions provided in the RVM documentation to finish. Specifically, you’ll add the following to ~/.rvmrc
:
And install the MySQL Ruby gem via:
(Adjust your path to MySQL’s bin
directory if needed; what’s above is the default installation.)
sudo
to install gems anymore.Ruby on Rails news and tips, and other ideas and surprises from Aaron at Everyday Rails. Delivered to your inbox on no particular set schedule.