Learn Ruby on Rails and ship your first app
A working Ruby on Rails application deployed to a real hosting platform, with fundamental understanding of MVC, Active Record migrations, routing, views, authentication, and tests — built and shipped in about 6–8 weeks of part-time work.

Free preview: 3 of 20 steps
Work through them in the real run view, exactly as a buyer does. No account, no payment, nothing saved.
3 free unlocks per month — yours to keep forever
No account needed — nothing is saved.
Included with every copy
- Your own copy — keep it forever
- Gets better over time — free updates included
- Run it on web and mobile
- Invite a partner to go through it with you — you share the same progress
- Make it your own — a private copy you can edit to fit your situation
- 3 knowledge checks to test what you've learned
- The playbook's community — ask questions, get additions, and see how other buyers improve it, right on the step
Who it's for
Programmers who know variables, functions, and conditionals but have never shipped a web app. You're comfortable in a terminal and want to build real features, not follow another todo-list tutorial.
About this playbook
A practical path from zero to a deployed Rails app for people who know basic programming but have never built a web application. You set up the environment, build a real project step by step, add authentication with Rails's built-in tools, write tests that actually catch bugs, and deploy without a DevOps degree. No JavaScript framework, no container magic — just Rails as it ships.
Covers 1 situation
How comfortable are you with Ruby syntax already?
The playbook asks you along the way and shows you only the steps that apply to you.
What you'll do, step by stepFree preview
Only a sample is open: 3 of 20 steps can be read in full. The rest unlock when you buy.
Phase 1: Orientation and setup readiness
2 stepsPhase 2: Install Ruby, Rails and run the first server
4 stepsPhase 3: Build one resource end to end
3 stepsPhase 4: Add real features with less guidance
3 stepsPhase 5: Add authentication and scope data to users
3 stepsPhase 6: Write tests that catch real bugs
2 stepsPhase 7: Deploy the app to a public URL
2 stepsPhase 8: Review what still needs practice
1 step
Details
What you need first
Basic programming literacy — you understand what a variable, a function, and an if-statement do. A computer with macOS, Ubuntu, or Windows (with WSL2). Ability to follow terminal instructions.
Tags
Common questions
Glossary
- Mise
- A tool that installs and switches Ruby (and other language) versions on a per-project basis, so each app can pin its own version instead of fighting over one system-wide install. In this guide it's used to install Ruby before Rails is installed on top of it.
- Scaffold
- A Rails generator command that creates a complete CRUD resource in one pass — model, migration, controller, views and routes. It's used here to see the full MVC request cycle at once; production apps typically build resources by hand or with tailored generators instead.
- Active Record
- Rails's layer for querying the database and returning Ruby objects, such as with Article.find(params[:id]). It's the model step of the request cycle: it turns database rows into objects a controller or view can work with directly.
- RESTful routes
- The full standard set of routes — index, show, new, create, edit, update, destroy — that a single resources declaration in config/routes.rb generates automatically for a resource, along with their path helpers, without anything added by hand.
- has_secure_password
- A method used on the generated User model that makes it store passwords as a bcrypt hash in a password_digest column rather than as plain text. Because of it, there is no plain password column anywhere in the app.
- Devise
- A third-party Ruby gem for authentication, aimed at more complex needs such as OmniAuth or admin separation. This guide uses Rails's own built-in authentication generator instead, since Devise's extra configuration isn't needed for this app.
- before_action
- A Rails controller callback that runs before a named action executes. The generated ApplicationController uses one, before_action :require_authentication, to lock every controller action behind login by default unless a controller explicitly opts out.
- allow_unauthenticated_access
- A class method declared inside a controller to name which actions stay open to logged-out visitors, overriding the app-wide login requirement set by the before_action. Declaring it with only: %i[index show] on ArticlesController is what lets anyone read articles without logging in while every other action stays locked.








