Author: Michael Hartl
Publisher: Addison-Wesley, 2010
Aimed at: Intermediate Ruby developers
Pros: Grounded in the real world
Cons: Expects you to go to a lot of effort
Reviewed by: Ian Elliot
This book takes a very realistic approach. This is pretty demanding but worth the effort.
Ruby on Rails 3 isn't an easy topic and I can't imagine a book for the 100% beginner. You need to have a reasonable grasp of Ruby and you need to understand how dynamic website work. The book claims that you don't need to know much Ruby to use Rails and while this might be true to an extent you have to be sophisticated in your attitude towards programming in general to learn much.
This is a tutorial-based introduction to Ruby on Rails 3 and you need to be willing to follow the examples. There is also a "Livelessons" edition of the book which bundles a DVD with 18+ hours of video instruction (see side panel).
Michael Hartl takes a fairly realistic approach to Rails development. Not for this book is a simple Hello World approach using unrealistic working methods. For example, in Chapter 1 the reader is shown how to install and use Git for version control. This is realistic but you need to remember that if you are trying to struggle with Rails then perhaps a diversion into Git isn't what you need.
You also have to be prepared to do a lot of work setting things up before you even get started - it is worth it! Also to make sure that the examples work as advertised you have to use specific versions of the downloads and these might not be the latest or the ones that you might already have downloaded. It is worth spending the time to get the initial setup correct.
Another possible "distraction" is the use of test driven development throughout the book. You might not like it but it is realistic.
Chapter 2 goes on to a demo app - for posting microblogs to a site. Then we have a chapter on "Mostly Static Pages" but its main emphasis is on test driven development. Chapter 4 looks at some Ruby features that you need to know to work with Rails effectively - in my opinion you probably need to know this before reading the book and so it is best considered a revision.
Chapter 5 continues the tutorial with a look at layout and navigation. Chapters 6 and 7 move on to managing users with an ideal data oriented-task to show the MVC model in action Chapter 8 and 9 deal with allowing the user to signup, sign in and sign out and Chapter 10 fills in the details of updating, showing user information and deleting users.
Chapter 11 show how to implement the micropost management and Chapter 12 makes things a little more complex and realistic by allowing users to follow users.
Overall the book is well written and nicely paced - but remember the earlier warning that the author doesn't try to make the job seem simple by stripping it down to its bare essentials and there are lots of potentially new ideas to master. As long as you like the "learn by doing" method and are prepared to actually do then this comes highly recommended.