December 13-December 19, 2008 Edition
The Rails team hasn’t been hibernating this week: 50 commits hit the edge branch, from a variety of developers. Here’s my pick of the most interesting and significant new core code for the week.
If you’ve been keeping in touch with Rails at all, you’ve heard about Metal this week: superfast endpoints inside of your Rails applications that bypass routing and Action Controller to give you raw speed (at the cost of all the things in Action Controller, of course). This builds on all of the recent foundation work to make Rails a Rack application with an exposed middleware stack. Rather than explain Metal in more detail, here are places you can read more about it:
- Introducing Rails Metal by DHH
- Rails Metal: a micro-framework with the power of Rails by Jesse Newland
- Metal: Super-fast Endpoints within your Rails Apps by Peter Cooper
- What’s New in Edge Rails: Rails Metal by Ryan Daigle
- The comments to the actual code commit are illuminating and sometimes contentious as well.
Rack-based Session Stores
A big change pushed the underpinnings of Action Controller session storage down to the Rack level. This involved a good deal of work in the code, though it should be completely transparent to your Rails applications (as a bonus, some icky patches around the old CGI session handler got removed). It’s still significant, though, for one simple reason: non-Rails Rack applications have access to the same session storage handlers (and therefore the same session) as your Rails applications. In addition, sessions are now lazy-loaded (in line with the loading improvements to the rest of the framework). commit
A related change provides persistent session identifiers for cookie sessions, with API compatibility with the server-side stores. commit
MIME Type Handling
There are a couple of changes to the code for handling MIME types in Rails. First,
MIME::Type now implements the
=~ operator, making things much cleaner when you need to check for the presence of a type that has synonyms:
Active Record Cleanup
Even though Active Record has been a core part of Rails basically forever, people are still eking out performance and usability gains here and there. This week saw commits to stop generating some useless queries when working with
belongs_to associations (commit), give better error messages on failed
find_by_foo! calls (commit), fix some association preloading issues (commit and commit), and improve performance with the MySQL adapter (commit).
Odds and Ends
Remember the cleanup for noise in the log files that edge got a couple of weeks ago? Building on that, we’ve now got prettier printing for output from any Gem in the backtrace. commit
If you’re on edge, Rails now enforces the requirement for Mocha 0.9.3 or higher, so that you can run the tests. commit
ETag handling has been cleaned up a bit: Rails will now skip sending an ETag header when there’s no body to the response or when sending files with
If you want to track down who worked on Rails in the past, it’s gotten easier thanks to a huge data collection and patching effort by Xavier Noria: he went through all of the changelogs and normalized author names, so we don’t have the confusing mash of names, handles, and email addresses in there any more. commit