There are many beginning and advanced Ruby on Rails books available, from the authoritative Agile Web Development with Rails to the cookbook-style Rails Recipes. However, healthy guidance for intermediate-level developers is lacking at best. Ironically, this is the most crucial stage in the process of becoming proficient with Rails because one must begin to learn why, not just how. Eldon Alameda's Practical Rails Projects (Apress, 2007) effectively fills that gap. I know Alameda from our local Ruby User Group and spoke with him frequently while he wrote this book. His expertise with Rails definitely shines through in the hefty 621-page volume.
Practical Rails Projects has a unique and effective approach. Instead of spoon-feeding contrived code snippets, Alameda teaches by example, leading the reader step-by-step through the design, creation, enhancement, and analysis of several full-fledged projects. Each project introduces new techniques to the intermediate Rails developer carefully and with plenty of explanation — from caching to generating graphs to RESTful application design and much more. Rather than regurgitating documentation that is occasionally unclear or misleading, each application begins with a clean Rails project and is built up step-by-step with detailed commentary on how and why each step is taken. Alameda's format reflects the reality that real-life projects never have a straight development path; at each step one must make tough decisions, watch for pitfalls and take risks. There are no leaps-of-faith or "just trust me" moments, everything is explained. In the final chapter of each project, Alameda also suggests ways that the project could be improved and how to apply the newly learned techniques to previous projects in the book.
The text is clear and uncomplicated with an approachable style. Projects even makes Rails' least fun framework, ActionWebService (which helps you create SOAP and XML-RPC services), easy to understand. While there are some glaring proofing mistakes, such as "Ruby" uncapitalized and some malformed URLs to external resources, the code snippets are practically error-free and all source and binary resources are available via the Apress website.
Overall, I believe Practical Rails Projects is a strong book for the intermediate Rails developer. It provides an introduction to more advanced concepts of the framework without being preachy or obtuse. It lacks any discussion of test- or behavior-driven development with Rails, but the breadth and depth of the topics it covers makes up for this weakness. Like any book that covers a rapidly-changing open-source project like Ruby on Rails, Projects will date quickly, but in the near-term it should be of great help to developers looking to gain constructive experience.