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.
Learn how to build fast, modern web apps with HTML over the wire.
Setup your computer with Ruby on Rails and deploy to a production server.
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.
In this episode, we will look at an approach to adding the ability to delete / remove the nested fields from our form.
Did you know Rails provides concerns for routes in addition to concerns for models and controllers?
Modules and concerns provide a way to make functionality reusable across your Rails application and other apps. In this lesson, we'll show you how we can refactor our comments functionality to add a feature to any resources in Rails.
Our most popular episode is the Liking Posts episode, so we're revising it and taking advantage of Hotwire to implement the same feature with no custom Javascript
In this video we explore some potentially unexpected behavior resulting from using Active Record scopes.
We're ready to deploy our Password Manager to a hosting provider. We've chosen Fly.io this time to change things up and see how another hosting service works.
We're ready to spruce up our Password Manager design with a little TailwindCSS.
Now that we have password sharing, it's important to add roles & permissions so users have limited access to actions on shared passwords.
Sharing is caring. Password sharing can be pretty easily implemented by using our join table. All we need to do is add and remove records to add or remove access for a user.
OAuth can be hard to understand and debug. Plus, this process is abstracted even further with OmniAuth in Rails. In this episode, we'll walk through t
Copying to the clipboard is an incredibly useful feature for a password manager. We always want to copy & paste the username and password to authenticate, so we'll write a Stimulus Controller to add copy to clipboard functionality
Next up, we need to be able to edit and update the passwords in our password manager application
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.
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.
We look at using the built in SimpleDelegator class to easily create decorators for objects.
Learn how to build custom Turbo Stream Actions to build things like browser notifications, console logging, or anything you want. Plus, we'll look at how Turbo implements this in their GitHub codebase.
In this episode, we will learn about how Rails initializers work internally.
Join 88,570+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.