Author: Gregory Brown
Publisher: O'Reilly, 2009
Aimed at: Ruby aficionados and experts
Pros: Covers some interesting topics
Cons: Title is misleading and asumes advanced knowledge
Reviewed by: Mike James
I didn't like this book much but … read on you might disagree after I've described it to you. The big problem is that a book called "Ruby Best Practices" should really be about a set of principles that could be regarded as "Best Practices". Instead this book is a fairly rambling account of topics that the author finds interesting and he justifies them by claiming that they are what makes Ruby special.
The first chapter is on using tests to drive Ruby development and most of the ideas presented are not particularly Ruby-specific - the techniques and examples are. Then we move on to "Designing Beautiful APIs" which dives into using code blocks in interesting ways. A chapter on using the dynamic toolkit is useful, as is one on text processing and file management but they don't really fit the "best practices" idea. Chapter Five is an overview of functional programming within Ruby; Six is on debugging; Seven on localisation and the final chapter is on maintenance.
Even if you agree with the choice of topics I found many of the explanations of the ideas dense and difficult to follow - to the point where occasionally I gave up reading. The author is clearly knowledgeable and uses this knowledge to describe particular situations and real world examples but he often fails to actually impart the generality to be extracted, other than getting excited about it, and leaves the reader to work it out.
Part of the reason is that the discussions are often difficult to follow it that they assume that you are expert enough to know everything about everything and there is rarely any small concession to the fact that you might have forgotten. For example, most of us use regular expressions but the book dives in with a complex expression, comments on it without any explanation or clarification, and then states that if you understood that you will understand what is coming next. If you really are a complete Ruby genius then you will understand it all - but you wouldn't need to read the book in the first place.