Rails, or more appropriately Ruby on Rails is the new web application development framework that everyone is so excited of and raving about how it cuts development time by a factor of 10 and does away with the cumbersome XML configuration files that are the hallmark of J2EE.
Being an old Java hand, I wanted to see firsthand if there was some substance beneath all the hype. I was also intrigued by the fact that many other old Java hands whom I respect and admire, like James Duncan Davidson, Elliotte Rusty Harold, Bruce Tate, Graham Glass, and Brian McAllister are now fervent (to different degrees) rubyists and Rails-enthusiasts. If it weren't for them, I would never have undertaken this journey, probably.
But anyway, this is supposed to be a book review, not a chronicle of my ongoing discovery of Rails.
I mostly like using books to discover and learn about new technologies, so it's perfectly natural that I decided to take off with what is considered the book about Rails. And how could it be not, with Rails' creator David Heinemeier Hansson as one of its authors?
It is also the only one published so far but, even though the choice was a bit, uhm ... limited, I wasn't disappointed. The book, as is customary with titles from The Pragmatic Programmers' bookshelf, is very good. It lays down in detail almost everything you need to know to be productive with Rails, save for the language Ruby itself. To be honest, the book includes an appendix introducing the basics of Ruby, but it's just the bare minimum. I suggest getting yourself a good Ruby book (like Programming Ruby, also from The Pragmatic Programmers, which I am currently reading and will review shortly) if you really want to get the most out of Rails.
Another caveat you have to be aware of is that Rails is a quickly moving target. The book covers version 0.13, which was current around mid-2005. There was a 0.14 version after that and we are now at 1.0, since a few weeks ago. However, I didn't find I had much to change while experimenting with Rails following the book. As always with Open Source software, resorting to the mailing lists, forums or the #firstname.lastname@example.org IRC channel is the best avenue for finding answers to your doubts and asking support questions.
The book is organized in four parts:
Part I introduces the design principles behind Rails, its most important concepts and briefly covers how to get started by installing it and writing your first program. The part about installation is the one that is bound to become quickly obsolete, as new and easier installation methods for the various supported platforms are developed.
Part II dives into Rails by guiding you along the development of a real (albeit much simplified) e-commerce application. I find this approach to be very good and "pragmatic" indeed. Of notable interest is the chapter on testing. It's great to see that providing a good test scaffolding was one of the main design concerns in Rails and not just an afterthought.
Part III goes deeper into Rails and can be used as a reference for its components, like Active Record, Action Controller, and Action View. Bonus chapters on AJAX, Web Services, security, deployment and scaling issues are included here and will make the book even more valuable when you need to deal with "real world" applications.
Part IV contains the appendices, like the above mentioned introduction to Ruby, a reference of configuration parameters (be warned again: these might change), the full source code for all samples (of dubious value, in my opinion), and a list of online resources (once again, a list bound to be more and more incomplete as time passes and the excitement around Rails grows).
Overall, I find the quality of this book to be excellent. It's not thick to the point of being too heavy to carry around in your laptop bag, for those times when you need to peek at it, yet it covers enough of Rails to be considered a complete and authoritative reference. This is probably a testament to Rails' simplicity too.
The writing style is eminently readable. You can read it cover to cover, if you like, without getting bored. The frequent sidebars make it lively without being too distracting. A great amount of care and craftsmanship went into producing this book, and it shows.