Book Review: Practical Rails Projects

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.

One controversial decision made by Alameda was to use
the ExtJS Javascript library
extensively in one project to build an administration interface for a
legacy site. ExtJS is a powerful high-level library that simplifies
the creation of desktop-like interfaces in the web browser. Instead
of spending a lot of time hand-crafting HTML/ERb templates and CSS,
Alameda quickly creates an interface in ExtJS and uses Rails to
generate XML and JSON that drives the almost entirely client-side
application. While some may find this outside the spectrum of what
should be in a Rails book, many developers are now creating their
interfaces in Flex, SilverLight, and other client-side technologies.
With the recent official release of ActiveResource, I believe we will
see more web-service-focused Rails applications as time goes on.
Alameda's choice is also practical; with a small number of users
having access to the interface, he can place greater requirements on
them in order to deliver the application more quickly.

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.