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.
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 lesson, we dive into the Pagy source code to learn how to best refactor pagination inside of our own code.
In this episode, we refactor our code to use broadcasts_refreshes to get an extremely simplified version of a chat application.
We handle scrolling the most recent message into view upon page load along with any new messages that come through while on the page. We also broadcast new messages so everyone stays up to date.
We take care of submitting a message without having to click the form button, and fix an issue we create in doing so around replacing the form. We end with planning our next steps.
We explore the base application and create a turbo stream to append messages and reset the form. We then identify limitations in this approach, and outline necessary improvements for upcoming episodes.
Like many AI models, Gemini 2.0 can respond with structured output in a JSON schema that you provide in your request. This is incredibly handy for making integrations that don't have to rely on parsing a blob of text.
AI summaries are in every application these days. In this lesson, we'll use Google's new Gemini 2.0 AI model and API to generate summaries of text that we can use in any Ruby or Rails app.
Normally, we require dependencies at the top of files, but today we'll see where and when we might want to lazily require dependencies.
In this screencast, we explore Ruby's Hash#fetch method and how it handles default values. We show how providing a direct default value vs a block affects performance, especially important in Rails apps where unnecessary operations can impact speed.
Ever needed SSL in your development environment? Learn how to configure SSL for local development with Caddy
Rails 8 introduces a new expect method for permitting parameters that fixes a few of the issues with require and permit. Let's take a look!
HTML provides some handy attributes for buttons to target specific forms on the page. Learn how to use them to improve your Rails application forms.
Ruby 3.4 added 'it' to reference a block parameter with no variable name. Let's check it out!
Hotwire Spark is a new live reloading tool for Hotwire applications that uses morphing to update the page smoothly.
Ruby 3.4 now raises warnings anytime you mutate a string literal. Learn how to fix our code and use frozen string literals to improve performance.
We needed a feature to highlight lines in Markdown code blocks for the Rails guides. This is a fun Ruby challenge with many different solutions.
Calculating dates is helpful, but what if we took the black_friday gem a step further by adding sales?
Black Friday is a popular shopping holiday every year. In this lesson, we'll build a Ruby gem to help automate our Black Friday sales each year.
Adding delivery methods for notifications with Noticed is pretty easy. Today we'll look at using Bluesky's API to deliver notifications as posts on our feed.
Rails engines often need a way of providing JavaScript for their views. We can do this using Importmaps regardless of what the application is using for assets.