Book Review: Ruby on Rails Enterprise Application Development
"Building a complete RoR business application from start to finish" is the tagline of the book, and I commend the authors for living up to it.
This book is a very well written introduction to building a complete application, with enough emphasis on all aspects of the application development, starting with requirements gathering, design, development (in a team setting), testing, deployment and tackling post-deployment issues. The narrative flows very smoothly, expounding various techniques as they come along in a very natural, need based manner and keeps the reader engaged in what the task is at hand and how it will progress.
The book has ten chapters, all but the first are devoted to developing a very simple application to publish a list of sales contacts. I liked the fact that the application itself is extremely simple and does not need any deep knowledge of a specific domain.It stays out of the way, and that keeps the development process focused on Rails and not on the application itself. In real world, though, we would want the opposite, that Rails stays out of the way and the application domain be the focus. But, this book is about Rails.
Chapters 2 & 3 are devoted to stating the problem, designing the solution and laying foundations of the development process. A brief but sufficient introduction to installing the rails stack (Ruby, Rails, Mongrel, MySql, ssh) on various platforms, setting up the IDE (Eclipse), source code management using Subversion (so that a team can develop without loosing track of the code changes), takes up the bulk of the 3rd chapter. Within the limitations of space, the authors have done a good job of describing the steps and pointed to more in depth resources where needed.
Chapters 4 & 5 talk about developing the core application, with some material cleverly tucked away for "future enhancements" in later chapters. All the basic aspects of Rails framework are introduced in these two chapters with clear and concise description of each layer of the MVC architecture.
Chapter 6 jumps "Into Production". I have liked this approach and whole heartedly agree with the authors when they recommend: "Do not wait until your application is built before you create and test the production environment.". Again, they have done a good job of touching each aspect of "productionizing" their application, however brief it may be so that the reader is made aware of the gamut of things that need to be taken care.
Chapter 7 & 8 revisit the application and demonstrate how to improve the user experience (via Ajax) and extend the application after gathering important user feedback. Although adding search facility, task tracking and file upload seems to be a logical way to extend the app, I was surprised to see something as basic as user authentication got pushed in this phase. I would have expected it to be covered in the "core application" section. But that may be just my opinion, biased by the way I have been developing applications.
Chapter 9 deals with advanced deployment using capistrano and post-deployment tuning and optimization. About 68 pages of information packed with various techniques. This was one chapter I learnt the most from, since at my place of work, I do not get to deal with it as much as our deployment team does. By the same token, I cannot speak about the accuracy of the information presented, but based on my experience from the previous chapters, I trust that the authors have done due diligence and paid attention to details.
Chapter 10 was perhaps the only chapter which I felt a bit fluffy and could have been used to cover some more technical stuff. But it was short and I would excuse the authors for wrapping up by philosophizing a bit :-)
The only Appendix to the book described how to set up your own gem server. I had expected an Appendix on the more current features (like RESTful resources), without which the book looks dated already. But Rails is a fast moving target.
Overall, I enjoyed the book, and would heartily recommend it to any novice who has dabbled with Ruby and Rails and now wants to get serious about it. I was also happy with the publication quality. The cover is attractive, fonts are good, the layout pleasant (other than the TOC which appeared a bit crowded) and readable, good quality binding, and not many typos along the way. Kudos to the authors and the team for a job well done.
DISCLAIMER: I had received a free copy of the book for review.