Hero roadmap: the whole course on one page

Contents
All 50 lessons
Check yourself: install
Check yourself: first steps
Check yourself: core types
Check yourself: methods and IO
Check yourself: objects and tooling
Check yourself: networking
Check yourself: finish
How to practice
Two capstones, revisited (46+47)
Where to go next

All 50 lessons

All 50 lessons live on the course index as a chapter tree. Each chapter below starts at its first lesson — open it and follow the chain to the end of the chapter:

Check yourself: install

  1. How do you print the installed Ruby version?
    Answer: lesson 2, version
  2. Which tools let you keep several Ruby versions side by side?
    Answer: lesson 2, managers

Check yourself: first steps

  1. How do you quit irb?
    Answer: lesson 3, exit
  2. How do you run the file script.rb from the terminal?
    Answer: lesson 4, run
  3. Which file extension do Ruby scripts use?
    Answer: lesson 4, file

Check yourself: core types

  1. Which two values are falsy — everything else is truthy?
    Answer: lesson 9, falsy
  2. String or Symbol for a hash key that repeats often — and why?
    Answer: lesson 8, strings vs symbols
  3. Brackets return nil for a missing key — which method raises KeyError instead, or takes a fallback?
    Answer: lesson 13, read and fetch

Check yourself: methods and IO

  1. No explicit return in a method — what comes back?
    Answer: lesson 15, return
  2. What does yield do inside a method?
    Answer: lesson 16, yield
  3. Which block guarantees cleanup code runs even on error?
    Answer: lesson 19, ensure

Check yourself: objects and tooling

  1. What does super do inside an overridden method?
    Answer: lesson 22, super
  2. each returns the receiver — what does map return?
    Answer: lesson 23, map
  3. Which assertion checks two values are equal in Minitest?
    Answer: lesson 26, assert

Check yourself: networking

  1. How do you perform an HTTP GET with the standard library?
    Answer: lesson 31, get
  2. What runs when you call a method that does not exist?
    Answer: lesson 35, missing
  3. How do you make the greet task run prepare first in Rake?
    Answer: lesson 39, dependencies

Check yourself: finish

  1. How do you expose a JSON endpoint path in WEBrick?
    Answer: lesson 44, mount
  2. Where do URLs get mapped to controller actions in Rails?
    Answer: lesson 45, routes
  3. How do you benchmark two snippets against each other?
    Answer: lesson 48, bench
  4. Why do threads not speed up CPU-bound Ruby code — and what are they good for?
    Answer: threads and fibers, GVL
  5. How do you wait for a thread to finish before continuing?
    Answer: threads and fibers, threads

How to practice

Short daily reps beat rare long sessions. Type every snippet by hand, change one value, and predict the output before running it.

Keep one drill file per lesson so progress stays visible and review takes minutes, not hours.

name = "Ada" puts "hi #{name}"

Two capstones, revisited (46+47)

The course ends with two builds that reuse nearly every earlier lesson. Lesson 46 builds the todo CLI with options, files, JSON, and tests.

Lesson 47 lifts the same todo idea onto the web with WEBrick routes and JSON handlers, then checks it with Net HTTP.

ruby todo.rb --list

curl http://localhost:8000/todos

Where to go next

Finish both capstones, then deepen one direction at a time. Rebuild the CLI with new flags or extend the API with update and delete paths.

Beyond the numbered lessons, read the bonus article Threads and fibers — concurrency is the one topic the 50 lessons skip.

Continue with Ruby notes and the Ruby hub (in Russian) for more material in Russian.

Next: Ruby course

Article author: Arthur Isaev

Related articles
Ruby
Ruby course: zero to hero in 50 lessons
What is Ruby and where it runs
Install Ruby and check the version
irb: the interactive shell
Your first Ruby script
Variables
Numbers
Strings
Symbols
Truthiness: only false and nil
Conditions
Loops
Arrays
Hashes
Ranges
Methods
Blocks, procs, lambdas
String tools
Files and IO
Exceptions
Modules and mixins
Classes and objects
Inheritance
Enumerables
Duck typing and core idioms
Gems and Bundler
Testing with Minitest
Debugging
Encodings
Time and date
JSON and YAML
HTTP clients
Sockets
REST APIs
puts, print and p
Metaprogramming
Enumerators
Pattern matching
Arguments: splats and kwargs
Rake tasks
Environment and CLI
Logging
CSV
ERB templates
WEBrick server
Rails in one lesson
Capstone: todo CLI
Capstone: JSON API
Performance
Modern Ruby tour
Hero roadmap: the whole course on one page
Install Ruby on Windows 11
Install Ruby on Ubuntu
Install Ruby on Rocky Linux
Install Ruby on macOS
Install Ruby on FreeBSD
Ruby in Docker
Threads and fibers

Search this site

Channel @aofeed Chat @aofeedchat

Contacts and cooperation:
I recommend our hosting beget.com
Write to info@aredel.com if you:
1. Want to write an article for our site or translate an article into your native language.
2. Want to place thematically relevant ads on the site.
3. Ads on my site pass maximum censorship. If you see an ad block unsuitable for school-age children, shocking or misleading - please contact us by e-mail
4. Found a mistake, inaccuracy, bug, etc. on the site. ... .......
5. Articles can be shared on social media by clicking a network icon: