Let's Learn Ruby
a resource list-subheading>
Hi! This road map has helped me as a second-career developer who didn’t do a bootcamp. I hope it helps you too.
Notice a broken link? Or want to suggest an addition? Open an issue!
Table of contents
- Basics
- Foundational tools
- Advanced Ruby and Rails
- Front end
- Expanding my horizons
- Programming games
- Ruby media
- Rails codebases to study
🔗 Basics
🔗 Front-end basics
-
Learn some HTML, CSS, and JS
The Odin Project - Foundations path or resources under “Front end” below.
-
Build a blog from scratch
GitHub Pages is an accessible way to do this. (Choose the option “Project site”, then “Start from scratch”.).
🔗 Ruby basics
🔗 Basics
-
The Odin Project - Ruby
-
GoRails - Ruby for Beginners
If you prefer videos.
-
Try Ruby
And BigBinary Academy, if you like an interactive approach.
🔗 Guided practice
-
Exercism - Ruby
-
Advent of Code
With other people’s Ruby solutions to compare yours to. One way to do this is my Ruby AoC CLI (command-line interface).
🔗 OOP (object-oriented programming)
🔗 Build stuff with Ruby
-
A CLI (command-line interface) app
-
A game
A text-based game is the most straightforward option, but there are Ruby game engines for graphical games.
-
A static site
Bridgetown is great for (among other things) building static sites, which are simpler than SSR (server-side rendered) sites à la Rails. Maybe rebuild your blog? Be sure to join the Bridgetown Discord server—the maintainers are very welcoming and helpful to newbies.
-
More ideas
Coding Challenges, Build your own X, Projectbook, Project-based learning.
🔗 Reference
-
Ruby API
Mentioning it up here because it’s the best Ruby docs site but very little-known. Since its search uses a query param, you can add a search keyword to your browser to let you quickly search from the address bar, for example
rb partition
would take you to https://rubyapi.org/3.4/o/s?q=partition.
🔗 Rails basics
🔗 Basics
-
GoRails - Build a Blog with Rails 7
And if you want more along the same lines, Rails 6 for Beginners.
-
The Odin Project - Rails
🔗 Testing
-
thoughtbot - Testing Rails
Or the summary blog post. (In the book, ignore controller specs because they have been superseded by request specs.).
-
💲 Effective Testing with RSpec 3
🔗 Misc
-
Explore Ruby communities (below)
-
Style guides
For Ruby, Rails, and RSpec.
🔗 Getting hired
🔗 Get real-world experience to put on your resume
-
Contribute to open-source projects
I’ve written a short guide on how to get started.
-
Ruby Central - Scholars and Guides Program
🔗 Mentorship
-
First Ruby Friend
Where aspiring and first-year developers are connected with a mentor.
-
r/rails
🔗 The job search
🔗 Foundational tools
🔗 SQL
🔗 Basics
🔗 Git
🔗 Basics
🔗 How the Internet works
🔗 Advanced Ruby and Rails
🔗 Advanced Rails
🔗 Reference
🔗 Architecture
🔗 Background jobs
🔗 Front end
🔗 HTML and CSS
🔗 Community
🔗 JavaScript
🔗 Basics
-
Exploring JavaScript
Or MDN - JavaScript.
-
Modern JavaScript Explained For Dinosaurs
Plus import maps.
-
What the heck is the event loop anyway?
-
❓
Build something in JS
Or for a more structured approach: JavaScript30 and solutions, freeCodeCamp’s project-based JavaScript Algorithms and Data Structures, Frontend Mentor, Frontend Practice. You may also like JS coding exercises: Exercism - JavaScript, Advent of JavaScript and solutions, Advent of Code with JS CLI runner (1, 2) and solutions (1, 2, 3, 4, 5, 6 (TS), 7 (TS)); see also programming games below.
🔗 DOM, forms, and other Web APIs
🔗 Going deeper
-
You Don't Know JS Yet
Be sure to read the last three parts after they’re finished.
🔗 HTML-first JS libraries
-
i-html
For HTML over the wire. Also, read Hypermedia Systems and/or watch Return To Hypermedia: Solving Javascript Fatigue Using Fundamental Web Architecture, by the creator of htmx (a similar library that is larger and better-known).
-
Alpine.js
Add Alpine AJAX for functionality like i-html/htmx.
🔗 TypeScript
🔗 UI and usability
🔗 Learning
-
💲 Don't Make Me Think
-
💲 The Design of Everyday Things
-
Victor Ponamariov - UI/UX newsletter
-
Victor Ponamariov - 50 Tips to Improve User Interface
🔗 Libraries
-
Pico CSS
-
Shoelace
Soon to be superseded by Web Awesome.
🔗 Hotwire
🔗 News
🔗 Reference
-
Hotwire.io
(more extensive than the official docs).
-
turbo-rails "Usage" README section
-
thoughtbot - Hotwire examples
-
Betterstimulus
-
Stimulus-Use
-
Stimulus Components
🔗 Expanding my horizons
🔗 Be a mentor
🔗 Career advancement
🔗 My other lists
-
Learn Computer Science and Low-Level Programming
-
Learn Roc
A functional programming language.
🔗 Programming games
🔗 API games (any language)
🔗 Ruby games
🔗 JavaScript/TypeScript games
🔗 CSS games
-
Flexbox Zombies
-
Grid Critters
-
CSS Diner
-
Flexbox Froggy
-
Flexbox Defense
-
CSS Grid Garden
-
CSSBattle
-
Coding Fantasy
🔗 Other programming games
🔗 Ruby media
🔗 Chat / social media
-
r/ruby
And r/rails.
-
Ruby (Discord)
-
Ruby.social (Mastodon)
-
Ruby on Rails Link (Slack)
-
Lobsters
It’s not Ruby-specific, but it’s a way to widen your horizons and the discussions are of high quality. It’s like Hacker News but smaller and more focused on programming.
🔗 Newsletters
🔗 Blogs
-
Code with Jason
-
Fly.io - The Ruby Dispatch
-
Fullstack Ruby
-
Noel Rappin's Blog
-
One Ruby Question
-
Write Software, Well
-
zverok on lucid code and open data
🔗 "Let's build" screencasts
-
CJ Avilla - CreatorPlatform.xyz
-
Conner Jensen - learning management system
-
Conner Jensen - ecommerce app
-
Ken Greeff - Luxury Stays (accommodation directory)
-
TypeFast - Tinysale (Gumroad clone)
-
TypeFast - Airbnb clone
-
TypeFast - Trello clone
-
TypeFast - Twitter clone
-
TypeFast - Instagram clone
-
Webcrunch - supplement sharing app
🔗 Topical screencasts
-
Code with Jason Meetup
-
Deanin
-
💲 Destroy All Software
-
💲 Drifting Ruby
-
💲 GoRails
-
Ruby & Beyond
-
SupeRails
-
Webcrunch
🔗 Streams
-
AmirRajan
-
ChaelCodes
-
CodingWithCaleb
-
fractaledmind
-
FullStackLive
-
jardonamron
-
jhawthorn
-
purplelf
-
TenderlovesCoolStuff
-
thoughtbot on YouTube
-
thoughtbot on Twitch
-
YakAndShears
-
yesthatelise
🔗 Podcasts
-
Bike Shed
-
Code and the Coding Coders who Code it
-
Code with Jason
-
Friendly Show
-
Fullstack Ruby
-
IndieRails
-
Maintainable
-
Rails Changelog
-
Remote Ruby
-
Rooftop Ruby
-
Rubber Duck Dev Show
-
Ruby for All
-
Ruby on Rails Podcast
Especially starting at episode 372 went they went independent, brought on co-hosts, and hired an editor.
-
Ruby Rogues
-
Tightly Coupled Book Club
-
YAGNI
🔗 Rails codebases to study
🔗 Small codebases
-
github.com/onerinas/whatwentwelltoday
<2k lines. An app to share daily positivity.
-
github.com/krschacht/37signals-rails-code
<2k lines. Extracts from the Basecamp and Hey codebases.
-
github.com/nshki/naisho
<2k lines. Send personal data deletion request emails to hundreds of data brokers at once.
-
github.com/carsoncole/workypad
2k lines. App for managing job prospecting.
-
github.com/eigenfocus/eigenfocus
2k lines. Self-hosted project/time management app.
-
once.com/writebook
3k lines. App for publishing books to the web.
-
github.com/ChaelCodes/MeetAnotherDay
4k lines. Helps you find and meet up with your friends at conferences.
-
github.com/SpinaCMS/Spina
5k lines. CMS (Content Management System).
-
github.com/docusealco/docuseal
6k lines. Open source DocuSign alternative.
-
github.com/codetriage/codetriage
6k lines. Issue tracker for open-source projects.
-
github.com/maybe-finance/maybe
8k lines. Personal finance app.
-
github.com/demingfactor/calagator
9k lines. Community calendar platform.
-
github.com/lookbook-hq/lookbook
10k lines. UI development environment for Rails apps.
-
github.com/joemasilotti/railsdevs.com
12k lines. The reverse job board for Ruby on Rails developers.
-
github.com/RailsEventStore/ecommerce
12k lines. Example app showing DDD (Domain-Driven Design), CQRS, and Event Sourcing.
-
github.com/AllYourBot/hostedgpt
12k lines. Self-hosted ChatGPT alternative.
-
github.com/TheOdinProject/theodinproject
12k lines. Main website for The Odin Project web development learning platform.
-
github.com/lobsters/lobsters
13k lines. Hacker News clone.
-
github.com/thoughtbot/upcase
14k lines. Learning platform for developers.
-
github.com/CircuitVerse/CircuitVerse
15k lines. Digital logic circuit simulator. Has a Vue.js front end.
-
github.com/houndci/hound
14k lines. Automated code review for GitHub PRs.
-
github.com/chicago-tool-library/circulate
17k lines. A lending library management system.
-
github.com/rubyforgood/homeward-tails
19k lines. Connects adopters/fosters with pets.
-
github.com/ifmeorg/ifme
21k lines. Mental health communication web app to share experiences with loved ones.
-
github.com/openSUSE/osem
25k lines. Event management tool tailored to Free and Open Source Software conferences.
-
github.com/feedbin/feedbin
25k lines. RSS reader.
-
github.com/rubygems/rubygems.org
26k lines. Where Ruby gems are hosted.
-
github.com/huginn/huginn
36k lines. Web task automation.
-
github.com/AlchemyCMS/alchemy_cms
36k lines. CMS (Content Management System).
-
github.com/rubyforgood/casa
37k lines. Volunteer management system for the nonprofit CASA.
-
github.com/rubyforgood/human-essentials
39k lines. An inventory management system for essentials supply banks.
-
github.com/SumOfUs/Champaign
39k lines. Digital campaigning platform. A Rails app generator.
🔗 Larger codebases
-
github.com/WikiEducationFoundation/WikiEduDashboard
50k lines. Wikipedia course dashboard system. Has a React front end.
-
github.com/chatwoot/chatwoot
56k lines. Customer engagement suite. Has a Vue.js front end.
-
github.com/solidusio/solidus
72k lines. E-commerce platform.
-
github.com/mastodon/mastodon
75k lines. Like Twitter but self-hosted and federated.
-
github.com/openfoodfoundation/openfoodnetwork
102k lines. An online marketplace for local food.
-
github.com/campsite/campsite
90k lines. Self-hosted Slack alternative.
-
github.com/forem/forem
103k lines. Powers the blogging site dev.to. Uses Preact on the front end.
-
github.com/redmine/redmine
117k lines. Project management app.
-
github.com/alphagov/whitehall
117k lines. Publishes government content on gov.uk.
-
github.com/zammad/zammad
250k lines. Helpdesk/customer support system.
-
github.com/decidim/decidim
288k lines. The participatory democracy framework.
-
github.com/discourse/discourse
322k lines. Discussion forum platform. Has an Ember.js front end.
-
github.com/opf/openproject
368k lines. Project management software.
-
github.com/instructure/canvas-lms
745k lines. A popular LMS (learning management system).
-
gitlab.com/gitlab-org/gitlab
1.8 million lines. Like GitHub but with CI/CD and DevOps features built in. Uses Vue.js on the front end. Has great docs on architecture.