Merb developers used to be the non-conformists railing (pun intended!) against the inflexibilities of the Rails framework. According to them, Rails' preference for convention over configuration often means no configurability at all, so if one has a need to deviate from the stack like, say, use an Object Relational Mapper (ORM) other than the out-of-the-box ActiveRecord ORM, one would probably have to suffer through hoops to make it happen. Merbheads (you know, like fans of the Rent musical call themselves Rentheads) have been saying this shouldn't and doesn't have to be the case, and with the December 2008 announcement that Merb and Rails will merge to produce a more flexible Rails 3, Merbheads have made their point!
Which brings us to this book. Written by someone who started as a Rails developer and went on to become a contributor to the Merb and DataMapper projects, this book provides details on how Merb is architected to support flexible stack component assembly. It delves into the internal workings of many of the framework's key components, with excellent chapters on Routing, DataMapper, and merb-auth, the really nice authentication plug-in.
The book has a few editing problems (on pages 208-209, for example, the author mentions that SessionStoreContainer inherits from the class StoreContainer, but the code extract for SessionStoreContainer shows it inherits from SessionContainer). I also thought that two Merb innovations deserved more extended discussions than the brief ones provided in the book: Merb Slices (mini Merb MVC apps that can be installed as gems for reuse in multiple applications) and Parts (sort of like widgets, for use as component-like regions on web pages). Although the march to Rails 3 has somewhat slowed down work on Merb Parts, the need for lightweight components is still there, so any discussion that could help move things forward in that front would have been a value-add. Finally, a nitpick: why no reference urls? Readers who are new to Merb will surely appreciate recommendations on websites to visit for further enlightenment and study.
Because the Product Information does not provide a Table of Contents, I thought I'll provide this information to potential readers:
Chapter 1. Fundamentals
Chapter 2. Routing
Chapter 3. Controllers
Chapter 4. Views
Chapter 5. Models
Chapter 6. Helpers
Chapter 7. Slices
Chapter 8. Sessions
Chapter 9. Authentication
Chapter 10. Mailers
Chapter 11. Parts
Chapter 12. Caching
Chapter 13. Testing