Author: Michael Hartl
Publisher: Addison-Wesley, 2012
Audience: Intermediate Ruby developers
Reviewed by: Ian Elliot
This book takes a very realistic approach. This is pretty demanding but worth the effort.
This is the second edition of an acclaimed tutorial-based introduction to Ruby on Rails. This 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 websites 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 - and you really do need to be willing to follow the examples.
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. Chapter 6 moves on to managing users with an ideal data oriented-task to show the MVC model in action Chapter 7 and 8 deal with allowing the user to signup, sign in and sign out and Chapter 9 fills in the details of updating, showing user information and deleting users.
Chapter 10 show how to implement the micropost management and Chapter 11 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.