Author: Peter Cooper
Publisher: Apress, 2009 (2nd Edition)
Aimed at: Those with programming experience moving to Ruby
Pros: Covers Ruby plus its wider context
Cons: Doesn't deal sufficiently with the basics
Reviewed by: Mike James
This isn't just a book on learning Ruby; it's about the wider world of Ruby. As such it covers a lot of ground in a relatively few pages. It starts off with the basic beginner's material - variables, classes, flow of control and so on. This is all over in 100 pages and even in this section the author can't help but discuss the history of Ruby and its "environment". Personally I would have preferred a more logical and steady introduction to the basics. A real beginner is going to have trouble finding out how to program in the few pages dedicated to it. On the other hand if you already have a rough idea of flow of control and variables this is an adequate introduction to the way that Ruby does things.
Part Two dives into "core Ruby" by which the author means objects, modules, debugging, testing, files, database, deployment and so on. The final chapter in the section develops an example web bot.
Part Three specializes in Ruby online, some would say Ruby's natural application. However rather than concentrate on Rails the book deals with the wider issues - sockets, HTTP, email and then, unusually because it isn't really an online topic, and not something Ruby is currently very good at goes off into building GUI applications. The book rounds off with a reference section on Ruby gems and a few reference appendices.
This isnt' a complete beginner's book because it doesn't spend long enough on the fundamentals. It also isn't just an introduction to the Ruby programming language but to all of the additional technologies that surround it and to what it is used for. If you are looking for this sort of introduction then this is a good choice. It would also serve as an introduction to the slightly more advanced The Ruby Programming Language or to Programming Ruby: The Pragmatic Programmer's Guide both of which provide better guides to the language.