Books: Ruby for Rails

I just finished a series of blog posts called Ruby: A Python Programmer's Perspective. Now, I'd like to finish up by writing a quick review of Ruby for Rails. Overall, it wasn't bad. If you can't tell by my other posts, I learned a lot. I really enjoyed the middle of the book which covered Ruby, but I got bored toward the end when the author spent three chapters improving an ecommerce site.

The author appears to be an intelligent, native English speaker, however his grammar patterns made it difficult for me to read the book quickly. Here is an example:
We must be able to determine before executing an action what state we're in with regard to the visitor's login status and its importance. [p. 440]
Translation: "Don't show the login form if the user is already logged in."

Here's another example:
Facility with Ruby will stand you in good stead in your controller programming, as well as your model programming. [p. 438]
Translation: "If you don't know Ruby, you're going to have a hard time writing controllers and models." Note, this sentence is in chapter 16. I would argue that anyone who has made it to chapter 16 knows that you need to know Ruby to be proficient with Rails ;)

By and large, the code was pretty good. However, there were a few times when I was pulling my hair out. Here's an example:
def Work.all_periods
find(:all).map {|c| c.period }.flatten.uniq.sort
This ActiveRecord code pulls down every musical Work in the entire database in order to get a list of the 5 or so musical periods. I know that people love to say that Rails doesn't scale. Given this example, I'd have to agree. I would have preferred to see the code that makes the database do the hard work instead of downloading the entire table to the application server.

One thing I will say about this book is that a lot of people have read it. I like to submit errata to authors. If I find a technical error in a book, it's a good sign that I'm paying attention, so I try to find as many errors as possible. When I went to submit errata for this book, about half of the errors I found had already been submitted by other readers. That was pretty impressive.

In summary, if you need to learn Ruby in order to use Rails, this book is worth reading.