I often get asked about recommendations for resources to learn Ruby (and how to program, generally). This list is intended to catalogue the various resources I have shared over the years and be an easy reference point for future learners.
This is my go to recommendation for learning the Ruby language from scratch. You'll complete a number of exercises in the form of tests. Your goal is to get each test to pass by writing Ruby code. As with most $language Koans library, it starts off very easy and then ramps up in complexity.
The Odin Project
Specifically the Ruby portion of the "Full Stack Ruby on Rails" course. This course covers off almost all of the basics that you would need to be productive with Ruby in a project that isn't super complex.
One of the joys of the Ruby world is that someone is coming out with a Cool New Thing™ almost all the time. This can be hard to keep track of, and I have found Ruby Weekly a great resource to keep on top of all of the happenings in the world of Ruby. There are similar newsletters from the same publisher for other languages, too.
These timeless videos from Avdi Grimm illustrate the why behind a lot design patterns we employ every day, using real examples to help solidify the benefit of following these patterns.
- The Ruby on Rails Podcast — A weekly chat about Ruby on Rails, OSS and programming in general. Though not always about Rails specifically.
Garry Bernhardt — Watch
Thinking about the boundaries of and within systems can be tricky for new programmers. This talk does an excellent job of introducing the topic and providing concrete examples to take with you throughout your career.
Y Not- Adventures in Functional Programming
Jim Weirich — Watch
A detailed introduction to functional programming with Ruby, via first principles of lambda calculus.
Refactoring Ruby with Monads
Tom Stuart — Watch
Dealing with unwieldy code using monads to help simplify presence or absence of data in our apps.
All the Little Things
Sandi Metz — Watch
Another journey through a hairy refactoring, this talk takes an ugly section of conditional code and converts it into a few simple objects. It bridges the gap between OO theory and practice and teaches straightforward strategies that all can use to improve their code. Also, checkout Sandi's book at Practical Object-Oriented Design, An Agile Primer Using Ruby.