Save 36% for Black Friday! Save 36% on GoRails for Black Friday! Learn more →
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.
Rails 8 now ships with multiple databases by default. In this lesson, we'll learn how the configuration works and how to deploy to production with environment variables
Enqueuing jobs inside of a database transaction is a common mistake that's now handled for you automatically in Rails 7.2
Mission Control Jobs is a UI for ActiveJob in Rails. It was announced at Rails World 2023 and just got released. It currently supports SolidQueue and Resque with more queue adapter support in the future.
Have models that store the same data but need different functionality? Rails provides Single Table Inheritance in ActiveRecord to solve this problem.
Notifications in Rails applications are even easier now with the new release of Noticed gem v2. We'll explore how to add notifications to your Rails app in just a few minutes.
Normalizing data has always been a pain in Rails, but not anymore! Instead of callbacks or overriding setters, Rails 7.1 introduces "normalizes" to make normalizing data easy.
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.
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.
Hotwire lets us broadcast changes so we can use the same approach for nested comments, but in realtime!
Drag and drop sortable lists in Rails aren't too hard using Sortablejs and Stimulus to make wire them up to our backend with acts_as_list
We can use timestamps in our database to track of online users in your Rails
Learn how to write tests for validations on ActiveRecord objects in Ruby on Rails
With Rails 6.0, you can now define multiple primary and replica databases, define separate migrations for each primary database, and configure each model to read and write from different databases.
Mentioning Users with an @mention is a super common feature. Trix and ActionText are now part of Rails 6 which means we can very easily add support for tagging users with @mentions and other custom attachments in your applications.
Deciding whether or not to have separate first and last name fields gets a bit confusing. Basecamp's recently released name_of_person gem shows you exactly how to handle this reliably and also stands as a fantastic example of how to build a concern
Add various types of charts to your Rails app with Chartkick and use Groupdate to make easy group queries in SQL
Join 87,110+ developers who get early access to new tutorials, screencasts, articles, and more.
We care about the protection of your data. Read our Privacy Policy.