Some lessons from freelancing: Rails (eventually) needs layers
Beyond MVC: Layered design in Rails, service objects and the new Ruby Data class
Rails’ tight integration of ORM and web gives it a big productivity boost early on. However, as projects grow, tight coupling tends to surface through a mix of slow tests, overloaded controllers, models too close to the database, and domain logic tangled up with infrastructure.