Author: Dave Thomas, Chad Fowler & Andy Hunt
Publisher: Pragmatic Bookshelf, 2009
Aimed at: Serious Ruby programmers
Pros: Logical and well presented coverage of Ruby at fairly advanced level
Cons: Not suitable for beginners
Reviewed by: Mike James
This is my preferred book on Ruby. It complements what you can find on the web by being a logical introduction to a range of topics. It starts off with an overview of the language which should be understandable by anyone who can already program. If you have no idea about programming you won't be able to follow the examples or the ideas. Also don't expect the example used to be either realistic or fit together to make a whole. The examples are designed to illuminate the particular point being explained and not as a real world anything. In the main they do a good job but occasionally there are problems with the explanations or typography that leave you wondering exactly what the meaning is.
There is also the inescapable problem of not quite being able to accumulate a language fast enough to keep up with the idioms that the authors regard as everyday expressions. You will almost certainly have to stop and wonder what some expression means and backtrack to earlier in the book to figure it out. In the main, however, the book is a linear logical exposition of the ideas that make Ruby an interesting language.
About half of the book, the last half, is a straightforward Ruby reference and for me this is a wasted resource - I'd rather look it up on the Internet while working - but colleagues think differently and keep it with them at all times while coding. I keep it on the shelf behind me and mainly re-read sections that explain general principles of how Ruby works or should be used.
The book starts off with an overview of the language and then moves on to a more systematic treatment of objects, expressions and other language features. This is the longest, and perhaps main, section of the book. The next section considers how Ruby fits together with other systems - the Web, Windows, Tk, packages and so on. In the main these sections are short and to the point - they give you the basics of how things fit together.
It is important to know that this book doesn't cover Rails - the MVC framework that some say makes Ruby so attractive. If you want info on Ruby on Rails you need a different book, or rather an additional book because just because it doesn’t cover Rails doesn't mean it isn’t good on Ruby.
How to come to a verdict on a book that is so varied. In the main it's good, not perfect but good. Should you buy it? If you are serious about Ruby then this is the one book you should buy, but you really need it and some additional reading. Don’t buy it if you are a complete beginner - you need to have a good grasp of objects and another language to appreciate this book.