How to build a complete, real-world application from scratch with Ruby on Rails step by step.
A lot of Ruby code is "magic". We'll explain the magic and see how it works using the powerful tools Ruby gives us.
Accept subscription and one-time payments with Stripe in your Rails apps
Expert advice on keeping Rails apps organized and fast.
Cheap, easy hosting for Ruby and Rails apps.
Launch your product business way faster with our SaaS template.
A weekly podcast on web development and building products with Ruby, Rails, Javascript, and more.
A few of the Open Source projects we do at GoRails.
Build a Ruby on Rails app in 48 hours with us.
Help Junior developers get hired by sharing small projects to build their resume with paid work.
Find your next Ruby on Rails Job.
Since we're planning to share passwords with multiple users, we need to use a join table to associate the password with users. We'll explore how to set this up and create records using the join table and has_many through association
We don't want to save passwords in plaintext in our password manager's database. That would be insecure. Luckily Rails provides ActiveRecord Encryption to make this easy.
Our first step in building any application is designing what database models we will need to store our data.
A lot of developers use link_to and button_to interchangeably. In this lesson, we'll explore when you should use link_to and when to use button_to and the differences between them.
The addressable gem adds some nice features over Ruby's built-in URI class, but it doesn't have any helpers for extracting subdomains. In this lesson, we'll add some methods to Addressable to make accessing subdomains easier.
URI in Ruby is powerful, but not complete. We can use the PublicSuffix and Addressable gems to take this a step further for parsing domains and subdomains.
Processing inbound webhooks can be tricky. In this lesson, you'll learn how receive, verify, and process webhooks in an efficient and well-organized manner.
Blog posts often need cover images for social sharing. In this lesson, we'll add cover image file uploads with ActiveStorage.
We look at using the built in SimpleDelegator class to easily create decorators for objects.
Pagination is something we don't need until we publish a lot of blog posts. We can use the pagy gem to add page links to the bottom of our pages and handle thousands of blog posts.
Over time, you'll need to upgrade the Ruby version of your Rails application. For example, a new version of Ruby was released since we started this series that fixes a couple security issues in Ruby so we'll teach you how to upgrade your Ruby version.
Rails uses the MVC Pattern. This isn't as scary as it sounds. It's basically a design architecture that gives you 3 primary buckets to help you organize your code.
ActionText builds on top of the ActiveStorage file uploads feature in Rails, so we're going to configure Amazon S3 storage so we can upload files in production
ActionText is a feature of Rails that allows you to add rich text including file uploads to any of your models. This is a perfect fit for our Blog Posts, so we're going to replace the text column with a rich text field with ActionText.
Scopes are a way for us to change the way a database table is queried. For example, we can use them to change the ordering of the results so certain records are first.
Our scheduled blog posts adds some complexity to our app. In this lesson, we're going to write some tests to make sure that our code does what we want it to do.
Scheduling blog posts to be published in the future is the next feature we're going to add. In this lesson, we'll talk about several options we have to implement this and then choose one to build.
Next we're going to deploy our Rails blog application to production! This is a huge step, but also
Our blog doesn't look great. We're going to install TailwindCSS so we can easily style our Rails application however we want.
Anyone can create, edit, or delete a blog post in our Rails app currently. In this lesson, we'll add authentication so only allowed users can do those actions.
Join 87,677+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.