Current Ruby learning is all books:

This looks like an excellent resource:


Ways to practice Ruby:


Things I want to document first:

  • Install Ruby on MacOS
  • Install Ruby on Linux / ElementaryOS
  • Install Ruby on Windows
  • Install Homebrew & Oh My Zsh on MacOS & Linux / ElementaryOS
  • Install Git on MacOS/ ElementaryOS, Windows
  • Install ri on MacOS, Elementary, Windows
  • Install Rbenv on MacOS, Elementary, Windows
  • Have different versions of Ruby available for learning from different books / courses and how to manage all of that.

Build a Complete, Tested Ruby Program From Scratch

Learn object-oriented programming the Ruby way.

By building a real project with real code from scratch, you’ll come away knowing how to write your own Ruby programs and have a deeper understanding of both the how and the why.

Ruby Programming Environment

Ruby has a rich set of programming tools and libraries. Setting up your working environment and using it effectively is the first step toward becoming a productive Ruby programmer.

  • Installing Ruby on your favorite operating system
  • Running Ruby using the interactive Ruby shell (irb) and writing Ruby program files
  • Using Ruby’s documentation system to get help
  • Installing external Ruby libraries using RubyGems
  • Troubleshooting common problems
Ruby Language Constructs

If you’re already programming in another OO language, some of Ruby’s constructs may feel familiar. But Ruby has some pleasant surprises, as well. Topics include:

  • Expressions and variables
  • Numbers, string, and symbols
  • Loops and conditional expressions
  • Arrays and hashes
  • Classes, modules, and structs
Object-Oriented Programming

Ruby is an object-oriented programming language. It’s also a dynamic language. But what does that really mean and how does it change the way you write programs? We’ll show you! Topics include:

  • Using built-in Ruby classes
  • Defining your own classes with state and behavior
  • Creating unique objects
  • Telling objects what to do by calling methods
  • Modeling class-level inheritance relationships
  • Sharing code with mixins
Object-Oriented Design Principles

Defining classes and using objects is a good start, but along the way you’ll also need to consider the overall design of your program. Can you make changes without ripple effects? Can you easily test the code? Can someone else use the code as a library? Topics include:

  • Encapsulation
  • Separation of concerns
  • Polymorphism
  • Don’t Repeat Yourself
  • Tell, Don’t Ask
Blocks and Iterators

Blocks are a fundamental and powerful aspect of the Ruby language. You’ll find blocks used throughout good Ruby programs. And many of the methods found in the Ruby standard library itself take blocks. To be an effective Ruby programmer you must master blocks! Topics include:

  • Calling built-in methods that take blocks
  • Writing your own methods that yield to blocks
  • Implementing custom iterators
  • Effectively using blocks in your programs
Organizing Ruby Code

Once you’ve conceptually organized your program into classes and modules, you’ll want to further organize it for reuse, unit testing, and distribution.

  • Creating a Ruby project structure
  • Separating source files for easier reuse and testing
  • Namespacing to avoid naming clashes

Ruby has great support for interacting with the external world, whether it be through files, an interactive console, command-line input, or even the web. You’ll need some form of I/O in your application, but once you learn Ruby’s I/O libraries you might also start rewriting one-off scripts in Ruby, too. Topics include:

  • Reading data from files
  • Writing data to files
  • Creating an interactive console prompt
  • Handling command-line input
Unit Testing

The Ruby community places a high value on testing, and it’s for good reason. Testing gives you the courage to make changes, and as a result you’re more productive. Topics include:

  • Writing and running unit tests with RSpec
  • Test-driven development and the red-green-refactor cycle
  • Stubbing methods to control tests
  • Refactoring code, safely!
Distributing a RubyGem

Finally, you’ll likely want to package up your Ruby code and share it with your friends… or the world! Topics include:

  • Conforming to RubyGems conventions
  • Writing a GemSpec
  • Building a RubyGem
  • Publishing a RubyGem to a public server
Ruby Programming Idioms

Writing a Ruby program that works isn’t always the same as writing a good Ruby program. To master Ruby—to write compact, readable, and flexible Ruby programs—requires that you learn the idioms and culture of the Ruby community. That’s what this course is all about: becoming truly fluent in Ruby!

There’s going to be a bunch of Ruby on Rails stuff as well, plus HotWire stuff as I want simplicity. There’s also The Odin Project as well for RoR things and a module in Ruby as well.

This looks good for Rails, Vim, Neovim, shell, git and Ruby: