GoRails Courses/Advanced Ruby: Behind the Magic

  • $297

Advanced Ruby: Behind the Magic

This course teaches everything I wish I knew about Ruby when I was starting my career as a Rails developer. We'll learn lots of Ruby tricks that are used to build Rails and other libraries.

Dispell the magic with 6+ hours of Ruby knowledge.

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

Contents

Introduction

Welcome to the course 👋
  • 2 mins
  • 22.6 MB
Join our Discord

    Ruby Methods and Classes

    In this section, we'll be exploring methods and classes in Ruby to build a foundation for more complex things.
    Monkey Patching
    • 7 mins
    • 90.3 MB
    Using Refinements for Safer Monkey Patching
    • 8 mins
    • 172 MB
    Alias vs alias_method
    • 9 mins
    • 128 MB
    Introspecting Classes and Methods
    • 9 mins
    • 124 MB
    Class Instance Variable Inheritance
    • 14 mins
    • 201 MB

    Blocks, Procs, and Lambdas

    Blocks in Ruby
    • 13 mins
    • 186 MB
    Blocks vs Procs vs Lambdas
    • 11 mins
    • 145 MB
    The to_proc method
    • 9 mins
    • 115 MB
    The Splat Operator (*)
    • 10 mins
    • 228 MB

    Requiring Files and Autoloaders in Ruby

    Require & Require Relative
    • 11 mins
    • 193 MB
    Load & Autoload
    • 5 mins
    • 88 MB
    Zeitwerk Autoloader
    • 6 mins
    • 134 MB
    Building an Autoloader from scratch
    • 14 mins
    • 226 MB
    Module Nesting
    • 7 mins
    • 94.6 MB

    Metaprogramming

    Intercepting errors with method_missing
    • 9 mins
    • 116 MB
    Duck typing with respond_to?
    • 6 mins
    • 71.4 MB
    Improving with respond_to_missing?
    • 7 mins
    • 94.1 MB
    Defining methods dynamically with define_method
    • 7 mins
    • 91.7 MB
    Using a database to generate dynamic methods like ActiveRecord
    • 13 mins
    • 203 MB
    Recreating ActiveRecord initialize
    • 12 mins
    • 177 MB
    ActiveRecord where queries
    • 6 mins
    • 97 MB
    Module Include vs Extend & recreating ActiveSupport Concern
    • 14 mins
    • 197 MB
    How to use class_eval to define multiple methods at once
    • 11 mins
    • 146 MB
    Ruby's Eigenclass
    • 8 mins
    • 93.8 MB
    Metaprogramming Rich Text Mentions
    • 8 mins
    • 152 MB

    Domain Specific Languages

    Domain Specific Languages (DSLs) in Ruby
    • 14 mins
    • 222 MB
    Defining Methods Dynamically at Runtime
    • 12 mins
    • 191 MB
    How the Rails RouteSet and Mapper works
    • 13 mins
    • 285 MB
    Rails Route Mapper From Scratch
    • 10 mins
    • 161 MB
    Rake from Scratch
    • 18 mins
    • 252 MB

    Gilded Rose Kata

    Refactoring challenge that has a lot of interesting solutions.
    Gilded Rose Part 1
    • 19 mins
    • 118 MB
    Gilded Rose Part 2
    • 30 mins
    • 267 MB
    Gilded Rose Part 3 - Refactoring with Modules
    • 16 mins
    • 75.4 MB

    Bonus Lessons

    Three Meditating Munks
    • 8 mins
    • 96.9 MB
    Dec 18th, 2020 LiveStream
    • (1h 09m 35s)
    • 1.3 GB
    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

    FAQs

    What is the format of this course?

    We're not building a project, but exploring the individual features of Ruby that can be used to build frameworks and libraries.
    In this course, we build small projects like:
    • How ActiveRecord keeps track of validations (and inheriting them)
    • The Rails routes DSL
    • Rack and it's DSL
    • an autoloader (like Zeitwerk)
    • ActiveSupport Concerns from scratch
    • A couple ActiveSupport features like Integer's .minutes and .hours
    • The Rails link_to and div helpers
    • Metaprogramming ActiveRecord features from scratch
    • 3 drastically different refactorings of the Gilded Rose Kata
    • And much more

    How long is the course?

    This course is 6 hours of video screencasts.

    What experience level should I have before taking this course?

    If you have a basic knowledge of Ruby and/or Rails, you'll be able to follow along with this course just fine!