Learn Ruby With These Great Resources

18 Jun 2013

If you're looking to learn Ruby, the internet can hook you up. This is not an exhaustive list, but these are some of the resources that I have found useful.

Books:

Eloquent Ruby - Russ Olsen - First on the list for a reason. If you're going to read ANY book on Ruby, this is it. It's concise and yet manages to cover just about anything you need to know about the fundamentals of Ruby. In addition, each chapter is short, focused, and highly-structured, so you never feel like you're fighting against the length of the book.

Metaprogramming Ruby - Paolo Peretta - A lot of reviewers on amazon complained that its style was too similar to "Why's Poignant Guide." It is wrapped in a fluffy, condescending story where an experienced coworker informs you about all of your metaprogramming failings, but I must say that I learned a lot. In fact, I put an example guide on my github. The first half of the book covers the basics of metaprogramming in Ruby, while the second half analyzes examples from popular Ruby libraries.

Practical Object-Oriented Design in Ruby: An Agile Primer - Sandi Metz - Sandi Metz is uncommon in that she has both the ability to write well and a solid grasp of software engineering. To get a glimpse of her communication style, watch one of her talks. This is destined to be a software-engineering classic.

The Well Grounded Rubyist - David Black - I put this last because, even though it's filled with tons of great Ruby knowledge, some readers may find it a bit much, as did I. It is quite verbose. I cannot say I would recommend it to anyone who just wants to learn enough Ruby to be dangerous, but if you're writing Ruby for a living, at some point you will want to pick it up.

Websites:

Codeschool - This is a set of interactive courses from the group at Envy Labs. Although they include Ruby, the collection of courses run the gamut of web development. The production values are as high as they get. Most courses come with a set of instructional videos and some hands-on coding exercises. You can use your github account, and there is a public report card for employers to see. The subscription costs $25/month, but at the time of this writing, if you complete at least one course per month, it's $20/month. Try Ruby is free.

Ruby Koans - Unlike the other interactive resources, Ruby Koans specifically focus on edge-cases in the Ruby language.

Ruby Monk - A set of interactive Ruby courses. Also, it has an entire course dedicated to metaprogramming in Ruby. It's possible to use your github account, and there is a public report card to show potential employers/clients. The courses appear to all be free at the time of this writing.

Confreaks - This site is a nice collection of conference talks that cover Ruby and web development. You can search by topic or presenter. Totalmente gratis.

Rubytapas - A collection of short videos (2-5mins) done by Avdi Grimm. He uses xmpfilter to display results inside his text editor. Some episodes are free, but full-access costs $9/month.

Peepcode - A bit more expensive than the other resources, peepcode has videos on a variety of subjects, including Ruby and RoR. $55 for a 5-pack. Pricey, but you get what you pay for.

The Bastards Book - Covers everything from the very basics to regular expressions and web scraping using libraries like Nokogiri and Mechanize. Free.

The Ruby on Rails Tutorial - Although this is specific to Rails, it is one of the better tutorials I have ever gone through. And it's free. The book covers building an industrial-strength web app in Rails using git and heroku. A kindle e-book is available, but the online book was considerably more up to date when I compared them.

Tools:

Xmpfilter - Produces magical code annotations inside your text editor. I used this extensively when putting together my metaprogramming example guide. Xmpfilter is part of the rcodetools gem. You will need to install the gem and also go through whatever steps are necessary to get it working with your editor.

Syntastic - Syntax checking plugin for vim. This will help spot syntax-level Ruby issues when you save your files.