Hero roadmap: the whole course on one page
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:
- Chapter 0: Install guides
- Chapter 1: First steps
- Chapter 2: Core types and control flow
- Chapter 3: Methods, blocks and IO
- Chapter 4: Objects and tooling
- Chapter 5: Networking and metaprogramming
- Chapter 6: Rails, capstones and finish
- Bonus: Threads and fibers
Check yourself: install
- How do you print the installed Ruby version?
Answer: lesson 2, version - Which tools let you keep several Ruby versions side by side?
Answer: lesson 2, managers
Check yourself: first steps
- How do you quit irb?
Answer: lesson 3, exit - How do you run the file script.rb from the terminal?
Answer: lesson 4, run - Which file extension do Ruby scripts use?
Answer: lesson 4, file
Check yourself: core types
- Which two values are falsy — everything else is truthy?
Answer: lesson 9, falsy - String or Symbol for a hash key that repeats often — and why?
Answer: lesson 8, strings vs symbols - 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
- No explicit return in a method — what comes back?
Answer: lesson 15, return - What does yield do inside a method?
Answer: lesson 16, yield - Which block guarantees cleanup code runs even on error?
Answer: lesson 19, ensure
Check yourself: objects and tooling
- What does super do inside an overridden method?
Answer: lesson 22, super - each returns the receiver — what does map return?
Answer: lesson 23, map - Which assertion checks two values are equal in Minitest?
Answer: lesson 26, assert
Check yourself: networking
- How do you perform an HTTP GET with the standard library?
Answer: lesson 31, get - What runs when you call a method that does not exist?
Answer: lesson 35, missing - How do you make the greet task run prepare first in Rake?
Answer: lesson 39, dependencies
Check yourself: finish
- How do you expose a JSON endpoint path in WEBrick?
Answer: lesson 44, mount - Where do URLs get mapped to controller actions in Rails?
Answer: lesson 45, routes - How do you benchmark two snippets against each other?
Answer: lesson 48, bench - Why do threads not speed up CPU-bound Ruby code — and what are they good for?
Answer: threads and fibers, GVL - 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