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.
Calculating dates is helpful, but what if we took the black_friday gem a step further by adding sales?
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.
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.
Hotwire Spark is a new live reloading tool for Hotwire applications that uses morphing to update the page smoothly.
Ruby 3.4 added 'it' to reference a block parameter with no variable name. Let's check it out!
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.
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!
Ever needed SSL in your development environment? Learn how to configure SSL for local development with Caddy
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.
Normally, we require dependencies at the top of files, but today we'll see where and when we might want to lazily require dependencies.
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.
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.
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.
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 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.
In this episode, we refactor our code to use broadcasts_refreshes to get an extremely simplified version of a chat application.
In this lesson, we dive into the Pagy source code to learn how to best refactor pagination inside of our own code.
Learn how to use the CodeMirror editor in your browser using Importmaps.
We spend most of our time working with Ruby gems and node modules, but on the rare occasion, we might need to debug an Ubuntu / Debian package. In this lesson, we'll see how these packages work and debug something in the PostgreSQL package.
Let's look at how to apply CSS to the current user only to create a better UX for reading messages without using any JavaScript