A-5 Jeremy Kemper「Rails3:Convergent evolution」
Rails 3 : Convergent evolution
Jeremy Kemper (bitsweat) is a programmer at 37signals hailing from Pasadena, California. Hot on the heels of DHH, he has been the most active contributor to Rails. He’s knee deep in pretty much all aspects of the framework and one of the top batters against new, incoming tickets.
Rails is 5 years old, mature in open-source years, and its core principles have blossomed throughout the web. Others have borrowed from Rails, criticized it, and improved on it, and many have achieved similar goals: convention over configuration, model/view/controller design, pretty URL routing, HTTP middleware, easy object persistence, and, of course, programmer happiness.
Rails 3 takes this cross-pollination to the next level by borrowing the best from other frameworks and by thoroughly exposing its own internals for sharing, reuse, and extension. Merb, a Ruby web framework that evolved closely with Rails, is merging its code and programmer-centric sensibility. Whereas Rails’ audience are web developers looking to get on the web with a minimum of fuss, Merb’s are Ruby programmers crafting custom-built web services from the ground up. So we joined forces to distill the best of Rails and Merb into a potent new framework, Rails 3.
I’ll discuss the major design decisions we’ve made, new features in the pipeline, and Rails’ relationship with Ruby. Some highlights:
- Agnosticism: Rails has defaults, but no choice is worth a holy war. No religion here. You are free to choose.
- Action Pack: think Merb. We’ve overhauled controllers to be simpler, more modular, easier to extend, and even more Rack-friendly.
- Active Relation: Active Record internals have grown into a dense jungle of SQL string manipulations. We’re giving Active Record a heart transplant to eliminate that complexity and provide a more expressive query API.
- Active Model: we’ve extracted our modeling toolkit from Active Record and Active Resource for use with other libraries like Tokyo Cabinet, Cassandra, and MongoDB.