Ruby on Rails 3.0, an upgrade to the popular open source web framework that features a merger with the Merb framework, was released Sunday, the founder of Rails, David Heinemeier Hansson, said in a blog. Version 3.0's general availability follows a second release candidate that was offered last week. The capabilities of Merb have been leveraged in Rails 3.0 to boost performance.
"Rails 3.0 has been underway for a good two years, so it's with immense pleasure that we can declare it's finally here. We've brought the work of more than 1,600 contributors together to make everything better, faster, cleaner, and more beautiful," Hansson said in a blog post. Available now for download, Rails 3.0 is designed to work with Ruby version 1.8.7, 1.92, and 1.5.2.
Hansson listed the following highlights of Rails 3.0:
- A new Active Record Query Engine to make it easier to build complex queries over several iterations.
- Cross-site scripting protection by default.
- A new router for Action Controller, favoring REST "with less noise and complexity."
- A new Action Mailer, built on top of the new Mail gem.
- The ability to manage dependencies of Rails applications with Bundler. Developers can specify the libraries, frameworks, and plug-ins needed for an application.
Rails 3.0 also addresses encoding issues. "Never struggle with corrupted data pasted by a user from Microsoft Word again," Hansson said.
Railties, which has been described as the core of Rails, has been rewritten with the goal of using a new plug-in API for Rails with frameworks such as Active Record and Action Mailer. "This means that Rails plug-ins like the ones for DataMapper and RSpec have access to all of the integration as the built-in support for Active Record and Test::Unit," Hansson said.
Also, Action Pack and Railties are easier to extend.
A new Active Model framework allows ORM (object-relational mapping) like Mongoid to use Active Record validation, callbacks and serialisation. A rewritten Acton Controller removes references to Active Record, thus defining a simple API that ORMs can complement.
Meanwhile, rewritten internals and new plug-ins bring framework agnosticism for components of Rails 3.0. "Prefer DataMapper to Active Record? No problem. Want to use jQuery instead of Prototype? Go ahead. Eager to test with rSpec instead of test/unit? You got it," said Hansson.
"I'm personally incredibly proud of this release. I've been working on Rails for more than 7 years and the quality of the framework we have today is just astounding. This is only possible as a community effort and Rails 3 has seen so many incredible developers step up and help make this our best release ever (wink). Many thanks to all of you," Hansson said.
A post attributed to a key developer on the Merb project cited closure of a long development effort with Rails 3.0.
"First of all, this is a huge milestone for Rails. From my perspective, this work is three or four years in the making, from the beginning of the Merb efforts, through the merge, and on until the final release of Rails 3," said developer Yehuda Katz. "From a personal perspective, this release is huge closure for me; I feel like I've been working on Rails 3 (and associated projects, like Thor and Bundler) for years," Katz said.
People commenting on the blog also seemed pleased with the news. "Congratulations people! Rails 3 is definitively a major milestone not just for the ruby community, but for web development in general," said commenter Rodrigo Navarro.
Rails 3.0 also features a "a wealth of great Rails 3 documentation and more is coming shortly," Hansson said. "We'll continue to develop Rails 3.0 with fixes and tweaks via the stable branch and Rails 3.1 is already cooking on master," he promised.