Rails 3

by James

Well, I’ve been away from WordPress for a while thanks to flu (swine? maybe), and I thought a good way to break the silence would be with a post on the upcoming release of Rails: version 3.

As you may know, Rails 3 is a major re-working of the Rails internals — and ‘internals’ is the important word. Rails 3 will not introduce any major changes the the way Rails works for the normal Rails developer. If you compare Rails 3 application code to Rails 2 application code, you won’t see much difference.

Where you will see differences is in the Rails framework code – the stuff that implements features like routes, respond_to, render, and resources. Its fair to say that this code has undergone major changes — the guts have been ripped out and the whole framework has been put back together in a new way.

Of course it’s a testament to Rail’s strengths as a framework that a major refactoring of its code base is possible. It’s also testament to the skill of the people who are working on the code — the original Rails core team, plus new members from Merb. I’ve been following Yehuda Katz’s blog (he’s one of the guys who developed Merb) and the things he’s written about his work on Rails 3 have been really interesting.

In particular, Katz’s approach focuses more on the benefits of a well-organised Rails code base, and less on the pragmatic “make it cool as fast as possible” approach which seems to have characterised Rails up to now. That’s not to knock the later — Rails wouldn’t be where it is today if people hadn’t been willing to turn a blind eye to overly-complicated code or poor internal structures.

But these new changes are good: Rails will be as easy and as fun to use for serious developers (of plugins, for instance) as it always has been for front-end designers and application builders. It really feels like we’re getting the best of both worlds.

If you’re interested in learning more about the philosophy behind Rails 3, I recommend the following: