Completely updated for Ruby 3.2, this friendly course unlocks a world of opportunities.
Ruby is a versatile object-oriented programming language that's an absolute delight to use. 😍
It's been around for over 30 years, and Ruby is still going strong. It's used by companies like Airbnb, Basecamp, GitHub, Hulu, Kickstarter, and Shopify.
At this point, it's almost expected that all software developers know enough Ruby to get by.
But why settle for just "getting by" when you can code Ruby with confidence!
Imagine knowing Ruby well enough to create an endless variety of programs:
- Command-line tools
- Web apps using the Ruby on Rails framework
- API clients
- Simple task-automation scripts
- Static website generators
- Web scrapers and crawlers
- AI-powered apps
It's all well within your reach! Once you have a good grasp of the fundamentals, you can build nearly anything with Ruby.
But where do you start?
We distilled everything you need to know about Ruby, assembled it in the right order, and neatly packaged it as a video course that's paced for newcomers. 🙌
“I've been trying to add Ruby and Rails to my tool belt for the past 3 years, and have tried a handful of books and online courses. But, I've never been able to stick with any until I tried your Ruby course. I'm loving the course!”Jeremy Kratz
In this course we follow a step-by-step, project-based approach to learning how to write well-designed Ruby programs. For each new topic you:
- Watch a short live-coding video
- Visualize the concepts with rich animations
- Practice in a practical, fun exercise
- "Aha, now I get it!"
- Repeat for the next topic...
You see every move, every change, every refactoring first hand. It's as if we're sitting down together writing a Ruby program from scratch.
Meet Us In This Video
“The course is outstanding! The best I've ever taken. Rails is so much less mysterious now that I'm learning Ruby the right way.” Tony Barone
“The course is great! It really teaches you how to think like a Ruby developer.” Matt Halliday
Videos just the way you like 'em: easy to digest, straight to the point, and perfectly paced.
Welcome! After previewing the two Ruby programs we'll write in this course, we help you get your development environment set up so you can start writing Ruby code.
No time to waste—let's run some Ruby code! We look at two ways: interactively using IRB and by writing Ruby program files. You'll use both throughout this course and in your day-to-day Ruby programming.
We gotta start somewhere, and every Ruby program has its fair share of strings and numbers. We get our program started with style by printing some text to the screen, using variables, and formatting strings.
Pretty much everything in Ruby is an object. So we need to know how to create them, manipulate them, and get them to do things. You'll learn object-oriented programming the Ruby way!
Lurking in the shadows, Ruby has a special object named self. It's a bit mysterious at first, but we demystify self so you can use it with confidence.
The easiest way to make code reusable is to put it in a Ruby method. We learn how to define methods and call them with both positional and keyword arguments.
Ruby comes with a core set of built-in classes. But to write good object-oriented programs, we need to define our own classes representing the key concepts in our program.
You often want to be able to read and/or write the internal state of an object, externally. That's where Ruby attributes come in. When should you use them and how do they work? We answer that.
Symbols, aiiieeeee! They seem so simple, and yet it's tempting to overthink them at first. After seeing a few examples, you'll totally get symbols.
If this, then that, otherwise something else. Depending on whether or not certain conditions are met, programs take different paths. We explore several ways to express conditionals in Ruby.
Ain't no party like an array party. You often need to put objects in a collection—a list of names, favorite movies, or game players—and then interact with them as a group. Ruby arrays are themselves objects with methods, and they're used everywhere!
At this point, we know how to create objects and work with them in isolation. But object-oriented programming is all about different kinds of objects working together. So we define our second Ruby class and design it to collaborate with our first class.
The object referenced by the variable named self automatically changes depending on where we are in a program. How does that work and why is it important? We show you.
Ruby has common-sense conventions for organizing code into files and directories. This makes it easier to find, reuse, test, and distribute our code.
Up to this point, we've written a fair amount of Ruby code. How do we know it works? Currently we have to visually inspect the output. That's tedious and error-prone, so it's time to write automated tests that verify our code always works as expected.
Everywhere you look in Ruby, you'll see blocks. Get really good with blocks, and you've got the gist of Ruby. We start with the basics of blocks and then explore more uses of blocks in future sections.
Sometimes you just need an object that represents values. In those situations, reach for Ruby's Struct or Data class. We show you when and how to use both.
Modules have special powers, so to speak, that are often untapped by beginners. In this section we introduce modules as a way to group together related constants and methods that don't belong in any particular class.
Second to arrays, hashes are the other Ruby collection type you'll use most often. A hash is a collection of key-value pairs. Given a key, you can look up its value. And similar to arrays, hashes have a variety of convenient methods.
Once you learn how to use the methods in Ruby's built-in Enumerable module, your code will become more concise and expressive. We explore the most common Enumerable methods in detail, and put them to good use in our program.
No program is an island. It needs to interface with the outside world. And Ruby has elegant ways to read input and write output. We start by creating an interactive command-line interface to our program.
Moving on to file I/O, we learn how to read data from a file and write the program's results to another file. Along the way, we explore the File class which has a bunch of useful methods for working with files and directories.
While refactoring our code, we discover an opportunity to define a class-level method and compare it to instance methods.
Errors happen. Files go missing. Data is invalid. Network connections fail. And sometimes we just plain mess up. In this section we learn how to handle errors (exceptions) gracefully.
One way to share code between classes is to use inheritance. We extend our program to include several new, specialized types to see examples of inheritance in action.
Another, arguably better, way to share code between classes in Ruby is to use mixins. This is where modules reveal their true power. We refactor our program to mix a common set of capabilities into several classes.
Good Ruby citizens don't pollute the global namespace. So to avoid naming clashes, we use modules to put all our code in a unique and tidy namespace.
For the grand finale, we package up all the code and distribute it as a RubyGem. You learn how to write a GemSpec, build a RubyGem, and publish it to a public server.
What You'll Get
Lifetime access to everything you need!
“Your course has been one of the most amazing learning experiences I have ever had. I'm absolutely loving it. The speed of the course is perfect. The tone of the videos is just right, and the workbooks are great.”Ross Curzon-Butler
Begin unlocking your possibilities today!
No monthly subscription or time limit. You own it for life.
“I have a track record of never finishing courses, but yours is the first course I've ever finished 100%, every exercise and all. There is SO MUCH I loved about it! There were lots of small nuggets that made me ridiculously happy, super friendly explanations, and the right balance of principles and practice. There was also the freedom to branch off and make things my own. At every step I had a ton of ideas of how to extend it. The course allowed me to actually do that without boxing myself into a corner. As a front-end developer, I have struggled to understand what's going on in the rest of the code-base, but now I have a much better understanding and can ask better questions. Thank you!!!”Rebecca Williams
For New Ruby and Rails Programmers
No programming experience required.
New to OO programming?
Perhaps you're looking to jump-start your programming career or join a Ruby/Rails project. It all starts here! You'll learn the fundamentals of object-oriented programming the Ruby way through live coding, animated visuals, and hands-on exercises. No prior programming experience is assumed.
New to the Ruby language?
Maybe you've been intrigued by Ruby, but haven't yet had the opportunity to learn it comprehensively from beginning to end. Here's your chance to dive in! You'll learn all the things you'd expect in an OO language, as well as the things that make Ruby unique so you can tap into its true power.
New to the Rails web app framework?
Perhaps your goal is to write (or maintain) web applications with Rails. You'll have a much smoother ride once you're comfortable with the Ruby language. By taking this course, you'll understand some of the "magic" behind Rails and, more important, you'll be in a better position to use it to your advantage.
Already familiar with Ruby?
If you've dabbled with Ruby, but wondering if you're using it to its full potential, this course will help you put it all together. Ruby is different than other languages, and you'll need to use different techniques to get the most out of it. You'll learn to design flexible Ruby programs using modules, mixins, dynamic typing, blocks, and so on.
Created with 💛 by
Mike and Nicole Clark
It's been nearly 20 years since we first discovered Ruby, and we still use Ruby almost every day. It's a lot of fun while at the same time being an incredibly powerful language. We're grateful that we've had the opportunity to teach Ruby to thousands of new and experienced developers over the years.
As with all our courses, this is the course we wish we had when learning Ruby. One that's easy to jump into, doesn't get bogged down in syntax trivia, focuses on building a realistic Ruby program, and lets you comfortably learn everything in around 4 hours. We hope you enjoy it!
Thousands have loved learning Ruby using this course!
Here's what some of them have to say…
“First of all, Mike and Nicole were fantastic! Everything was explained clearly and step by step (and it really felt like they were explaining things directly to me). I was trying to learn Ruby on my own through various online tutorials, but they only offered bits of information that I did not know how to put together. This course was structured very well so I always learned things in context.” Marcin Drozd
“If I were going to learn Ruby from scratch today, this is how I would do it!” Chad Fowler, Author of Rails Recipes and The Passionate Programmer
“I think this was the best course I've ever seen online. It felt really well structured and seemed to give me just the right amount of knowledge from lesson to lesson.” Antonio Borges Rosado
“The course is great! It really teaches you how to think like a Ruby developer. I've been learning Ruby on my own over the past few months, but seeing all the different parts come together as an app has been more than helpful. A lot of stuff that I've previously read about just clicked after watching the videos. At the end of each chapter I felt like I had a good understanding of what I had just done and the reasons why I had done it.” Matt Halliday
“Awesome job! You delve deep enough to expose students to syntax and paradigms they'll run into in any Ruby code, while simultaneously keeping it succinct enough to complete in a couple days! To sum it up: you guys do a phenomenal job covering the basics in a clear, concise, and fun(!) fashion. I'd recommend the course without reservation.” Raphael Weiner
“I've been developing Ruby on Rails websites and apps for two years. This course gave me dozens and dozens of 'Ah-ha!' moments with regards to what is actually going on in my Rails apps. My confidence for building new Rails apps and refactoring my existing apps has increased tremendously.” Chip Ashby
“I have tried many things over the past year and nothing clicked. But your class really got me excited about Ruby. The best thing about your class is that you taught software design principles, not just how to run a loop or assign a variable. That is what made everything click and made it practical. You have really helped me further my goals!” Paul Haddad
“I did all the Ruby / Rails courses when I was working to get a better job. They were the single most powerful resources for me! Now I'm working on the other end and hiring a junior developers. We take them through some code challenges and applicants who have worked through Pragmatic Studio sail through all of our technicals. I recommend your courses to anyone looking to get into web development!” Wassim Metallaoui
“Our new hires are loving your online Ruby and Rails courses. In the past, our senior engineers taught new team members Rails on their own. But now with your courses, we are getting new engineers up to speed much easier and faster.” Eirik Holm, AppFolio
“This course really helped me get over the hump of being afraid of writing my own programs. Writing two different apps through the course is great and I'm even writing an additional two, of my own design, while I work through the course. The scope of the lessons are perfect.” Michael Duncan