Advanced Ruby: Behind the Magic by Chris Oliver

Advanced Ruby: Behind the Magic

Learn how the "magic" is made. This course explains everything I wish I knew when I was starting my career as a Ruby on Rails developer.

👉 This course is in Early Access.
In Early Access, you get the course a month early and I'll answer any questions you might have to help improve the course for everyone.

Launches on September 28th, 2020

Ruby code feels like "magic" 🧙‍♂️

I spent 6 months learning Rails before I realized needed to learn Ruby. Ruby is a very flexible language, but that makes it hard to understand sometimes. 

Here are some questions I was struggling with:

  • How do I know if this is a variable or method with optional parentheses?
  • What are symbols? How are they different than strings and why are they used so much?
  • Where does my code even come from? Why are there no "require"s anywhere? And what is autoloading?
  • How does ActiveRecord even know what attributes I have on my database table?
  • Are modules even useful?
These questions had me thinking Ruby was a stupid, frustrating, awful language.

Most programming languages are designed for the computer to understand it first and humans second. I had spent my time learning Python. Ruby felt like it was full of too much stupid "magic". 

Boy was I wrong.

Ruby is incredibly powerful.

All that stuff I was questioning... well that was intentional.

Ruby was designed to get out of the way on purpose. It wants you to focus on the problem, not what the computer needs. Everything about Ruby is designed to get out of your way so your code can communicate how it solves problems to other humans, not the computer.

When I realized that, my head started to explode. 🤯  You can focus on the business logic, not the syntax! This is amazing.

After years of building Rails apps, gems, and other things in Ruby, I realized I should try and compile all this knowledge into a course to save other people time.

We'll cover everything I wish I knew about Ruby when I started out as a Rails developer 10 years ago.

Since I started, I've recorded almost 400 screencasts on Ruby and Rails, built a Rails hosting service (in Rails!) and a popular SaaS template for building businesses. I've also built a handful of Ruby gems that have been collectively downloaded over 1.2 million times!

The trick to becoming good at Ruby is to understand the tools you have available.

Rails takes full advantage of these tools in Ruby to create DSLs for configuration, routing, and database querying. It also takes advantage of modules, class variables for fine tuning things, and a lot of other interesting tidbits.

In this course, we'll explore these core components of Ruby and recreate some of the features of Rails that you interact with every day.

We'll explain away the magic so you can see exactly how it works. The reality is there is no magic at all. Just some really smart use of Ruby's functionality.

This is the course I wish I had when I started. 😅

I always felt like I should take time to learn Ruby better, but I pushed it off. I'm sure you've felt the same way at one point.

Taking the time to learn Ruby well drastically improved my skills building gems, products, and Rails apps. I know that it's only going to make you a better developer.

Enough talking, let's get to learning Ruby. I'll see you in the course! 👋
— Chris

I'm Chris Oliver

You might recognize me from GoRails, Hatchbox, and Jumpstart.

I've spent the last 6 years building tools for Ruby on Rails developers. I want to help you master web development so you can bring your products and ideas to life easier.

Testimonials

I've been learning Ruby on Rails from Chris for 5 years and can't recommend his content highly enough. 🙌  He has a talent for breaking down concepts and introducing them in nice simple ways!
John Chambers
I highly recommend picking this up if you're looking to up your Ruby game. Chris is a fantastic teacher and wizard with so many 🧠 brains ✨🧙‍♂️
Andy Leverenz

What's included?

Video Icon 32 videos Text Icon 1 text file

Contents

Introduction
Welcome to Early Access 👋
2 mins
Early Access Feedback
Monkey Patching
7 mins
Alias vs alias_method
9 mins
Introspecting Classes and Methods
9 mins
Class Instance Variable Inheritance
14 mins
Blocks, Procs, and Lambdas
Blocks in Ruby
13 mins
Blocks vs Procs vs Lambdas
11 mins
The to_proc method
9 mins
The Splat Operator (*)
10 mins
Requiring Files and Autoloaders in Ruby
Require & Require Relative
11 mins
Load & Autoload
5 mins
Zeitwerk Autoloader
6 mins
Building an Autoloader from scratch
14 mins
Module Nesting
7 mins
Metaprogramming
Intercepting errors with method_missing
9 mins
Duck typing with respond_to?
6 mins
Improving with respond_to_missing?
7 mins
Defining methods dynamically with define_method
7 mins
Using a database to generate dynamic methods like ActiveRecord
13 mins
Recreating ActiveRecord initialize
12 mins
ActiveRecord where queries
6 mins
Module Include vs Extend & recreating ActiveSupport Concern
14 mins
How to use class_eval to define multiple methods at once
11 mins
Ruby's Eigenclass
8 mins
Domain Specific Languages
Domain Specific Languages (DSLs) in Ruby
14 mins
Defining Methods Dynamically at Runtime
12 mins
How the Rails RouteSet and Mapper works
13 mins
Rails Route Mapper From Scratch
10 mins
Rake from Scratch
18 mins
Gilded Rose Kata
Gilded Rose Part 1
19 mins
Gilded Rose Part 2
30 mins
Refactoring with Modules
16 mins
Advanced Ruby has to be one of the most impactful courses I've ever taken. I can't believe how much I didn't know!
Eric Berry