GoRails Screencasts

148 episodes listed below

Listen to the show on

One Rails method at a time, coded live.

The gist

GoRails Screencasts builds each lesson around a single piece of Rails, such as in_order_of, with_options, normalizes or validation contexts, and shows it working in a small demo app. The pace is casual and hands-on: the browser gets refreshed, the console gets checked, and small typos get fixed on screen.

PRESS PLAY

Find your next episode

All episodes

About GoRails Screencasts

GoRails Screencasts is a Ruby on Rails tutorial series that works at the level of the individual method. A lesson picks one tool from the framework, explains the problem it solves, and then makes it run inside a small demo app. The demo apps are plain. There is a task list with statuses like urgent, in progress, pending and done, a scaffolded examples model with an optional field, and a post that needs a title and body before it can be published. With so little else on screen, the method gets all the attention. The teaching style is conversational and visibly live. Several lessons open with a casual greeting, code is typed in real time, and the browser gets refreshed to check the result. When something breaks, it gets fixed on screen: in 'ActiveRecord in_order_of', a stray space causes a syntax error that is corrected before the lesson continues. That same lesson lays out a plain Ruby route to a custom order, mapping each status to a number in a hash and sorting with sort_by. Results get checked in more than one place. The normalizes lessons query the Rails console for what was saved and read the server log to show the browser submitting an empty string. 'Clean Up Optional Attributes in Rails with Normalizes' fixes that with a lambda that calls presence, which returns the value or nil, so a blank field is stored as a null rather than an empty string. 'Normalize All ActiveRecord Attributes' refers back to a previous lesson on that technique and adds a second optional field to show the gap left when only one attribute is normalized. Reading other people's code is one way lessons get started. 'valid with Context' opens with a greeting for the new year of 2026 and the view that reading code by more seasoned developers is one of the best ways to learn. It then opens a signup model in Basecamp's Fizzy app, spots validations scoped to a context, and rebuilds the idea around a publish method that checks title and body only when a post is being published. The closing point is that the same context can be passed to save as well as to valid. 'Removing Duplication Using with_options' likewise comes from browsing a codebase, then turns to the Rails API docs to show options merged into every call inside the block, including an example built on associations that share dependent destroy. Community questions feed the series too. 'Dynamic Partial Rendering' takes a question from the GoRails Discord group about type checking in a view, shows Rails rendering partials for single table inheritance models on its own, and uses string interpolation to reach the right edit partial for single-unit and multi-unit properties. It also notes a linter rule the approach runs into and leaves the final call to the developer.

Made for: Suits a developer who already works in Ruby on Rails and wants to add specific framework methods, such as normalizes, with_options or in_order_of, to their toolkit by watching them run in a small app.

What sets it apart: Each lesson covers a single Rails method or pattern and is coded live, with slips and console checks left in. Some lessons start from real code in Basecamp's Fizzy app or from a question in the GoRails Discord group rather than an invented exercise.

In their own words

GoRails is a series of screencasts and guides for all aspects of Ruby on Rails. Learn how to setup your machine, build a Rails application, and deploy it to a server.

Why you'd press play

A blank draft gets mercy; your publish button gets context-specific Rails rules.

Press play if you want

  • to see a Rails 8 app reach the web through Hatchbox, server settings included
  • to turn a Black Friday date calculation into a tested Ruby gem
Read the full recommendation in PlayNext →
ActiveRecord query and ordering methodsmodel validations and validation contextsnormalizing attributes with normalizesempty strings from optional form fieldspartials and single table inheritancereducing duplication in model codereading real-world Rails codechecking results in the Rails console and logs

Talks about

Best episodes of GoRails Screencasts

Short reviews from the PlayNext desk, based on the episodes we processed.

valid with ContextJan 19, 2026

A concise Rails review showing how validation contexts keep drafts flexible until a post is ready to publish.

Rails validation contexts make a familiar model feel newly practical by tying rules to intent. This short review follows a signup model that conditionally runs validations, then carries the same idea into a simple blog app: drafts can live with an empty title or body, while…

Deploying Rails 8 with HatchboxOct 20, 2025

A clear Hatchbox walkthrough that keeps Rails deployment practical, visible, and owner-controlled.

A Rails blog deployment with Hatchbox becomes a grounded look at how a small Rails app gets onto a server. The host works from a Postgres-backed blog through repository settings, main-branch deployment, environment variables, database setup, and the moment a server needs an…

Ruby Pattern MatchingAug 18, 2025

A practical Go Rails walkthrough of Ruby pattern matching, from nested data to custom deconstruction.

Go Rails treats Ruby pattern matching as a working tool for nested data, not just a neat syntax feature. It begins with deep matching across arrays and hashes, then builds through case/in expressions, shorthand forms, variable binding, and exhaustive matching.

Podcasts like GoRails Screencasts

Episodes

  1. 1

    How to Rate Limit Requests in Rails 7.2

    ·20m
  2. 2

    Removing Duplication Using with_options

    ·8m
  3. 3

    Normalize All ActiveRecord Attributes

    ·8m
  4. 4

    Dynamic Partial Rendering

    ·11m
  5. 5

    Clean Up Optional Attributes in Rails with Normalizes

    ·2m
  6. 6

    valid with Context

    ·19m
  7. 7

    Domain Monitor SaaS Introduction

    ·2m
  8. 8

    HTML Learning Path - Image Element

    ·15m
  9. 9

    HTML Learning Path - Text Elements

    ·13m
  10. 10

    Markdown Renderer & MIME Type in Rails 8.1

    ·5m
  11. 11

    HTML Learning Path - What is HTML and Why Learn It

    ·6m
  12. 12

    HTML Learning Path - Intro to Forms

    ·18m
  13. 13

    Module extend self

    ·5m
  14. 14

    Rails 8.1 Local CI

    ·8m
  15. 15

    HTML Learning Path - Additional Semantic Elements

    ·6m
  16. 16

    HTML Learning Path - Anchor Elements

    ·8m
  17. 17

    HTML Learning Path - Button Element

    ·11m
  18. 18

    HTML Learning Path - Form Parameter Naming Conventions In Rails

    ·5m
  19. 19

    Ruby Pattern Matching

    ·16m
  20. 20

    Authentication Generator Test Helpers

    ·14m
  21. 21

    How to use action_text-trix with Rails

    ·4m
  22. 22

    How to use Enumerable with Ruby Classes

    ·12m
  23. 23

    How to add Lazy Load Hooks to Rails Plugins

    ·13m
  24. 24

    How to use CodeMirror with ImportMaps

    ·12m
  25. 25

    How to use params.expect in Rails 8+

    ·9m
  26. 26

    What is 'it' in Ruby 3.4

    ·10m
  27. 27

    Live Reloading with Hotwire Spark

    ·12m
  28. 28

    Creating a Ruby Gem for Black Friday sales

    ·26m
  29. 29

    How To Use Importmaps With Rails

    ·18m
  30. 30

    How To Add Impersonation To Rails Authentication Generator

    ·16m
  31. 31

    Customizing Rubocop Rails Omakase Rules

    ·7m
  32. 32

    Tests Without Assertions Warning in Rails 7.2

    ·6m
  33. 33

    How to use Omakase Rubocop Linter/Formatter Rules for Rails

    ·19m
  34. 34

    Defer Job Enqueues After Transaction Commit in Rails 7.2

    ·17m
  35. 35

    How to use the Browser Guard in Rails

    ·15m
  36. 36

    How to use Dev Containers with Rails

    ·24m
  37. 37

    ActiveRecord in_order_of

    ·5m
  38. 38

    Adding Honeybadger Insights To The RubyGem

    ·23m
  39. 39

    Adding Timeouts to net-ssh with Mike Perham

    ·1h 20m
  40. 40

    Limiting & Clamping Values in Ruby

    ·5m
  41. 41

    Rubygems Trusted Publishing

    ·11m
  42. 42

    Refactoring Local Variables To Methods

    ·5m
  43. 43

    One Time Payments With Pay And Stripe

    ·39m
  44. 44

    Changing Contexts To Objects With IRB

    ·5m
  45. 45

    ActionController Modules in Rails

    ·3m
  46. 46

    Components with Phlex in Rails

    ·26m
  47. 47

    How to use Mission Control Jobs in Rails

    ·10m
  48. 48

    Single Table Inheritance (STI) with ActiveRecord in Rails

    ·13m
  49. 49

    Send Notifications in Rails with Noticed gem v2

    ·24m
  50. 50

    What's New In Ruby 3.3

    ·17m
  51. 51

    Syncing Repositories with Ruby Scripts - Part 2

    ·38m
  52. 52

    How to use Solid Queue in Rails with Active Job

    ·13m
  53. 53

    Syncing Repositories with Ruby Scripts - Part 1

    ·33m
  54. 54

    Linux Signal Trapping in Ruby

  55. 55

    Template Locals in Rails 7.1

    ·9m
  56. 56

    HTML Learning Path - Additional Input Types

    ·19m
  57. 57

    HTML Learning Path - List and Nav Elements

    ·14m
  58. 58

    HTML Learning Path - HTML Document Structure

    ·11m
  59. 59

    How Rails.env works with EnvironmentInquirer & StringInquirer

    ·13m
  60. 60

    Health Check Endpoint in Rails 7.1

    ·5m
  61. 61

    How to upgrade to Rails 7.1

    ·8m
  62. 62

    Normalizes method in ActiveRecord

    ·10m
  63. 63

    URL Shortener Requirements

  64. 64

    Rails 7.1 Authentication From Scratch

    ·45m
  65. 65

    Extending Rails (Gently)

    ·24m
  66. 66

    Bundler's New Ruby Version File Option

    ·4m
  67. 67

    Responsive Navigation with Turbo

    ·12m
  68. 68

    Better Debugging With The Ruby Debug Gem

    ·26m
  69. 69

    Refactoring Turbo Streams into Turbo Frames

    ·11m
  70. 70

    Refactoring with ActiveSupport::TimeWithZone

    ·16m
  71. 71

    Adding a Highlight Button to Trix

    ·7m
  72. 72

    The difference between Link_to vs Button_to in Ruby on Rails

    ·14m
  73. 73

    How to Process Inbound Webhooks (Railsconf 2023)

    ·42m
  74. 74

    Upload Cover Images in Rails with ActiveStorage

    ·29m
  75. 75

    How to Add Pagination for Blog Posts in Rails

    ·32m
  76. 76

    How to Upgrade Ruby Versions

    ·5m
  77. 77

    The MVC Pattern Explained

    ·12m
  78. 78

    Blog Posts with File Uploads using ActiveStorage & Amazon S3

    ·22m
  79. 79

    Rich Text Blog Posts with ActionText

    ·17m
  80. 80

    Sorting Blog Posts With Scopes

    ·9m
  81. 81

    Writing Tests for Scheduled Blog Posts

    ·15m
  82. 82

    Adding Scheduled Blog Posts

    ·24m
  83. 83

    Deploying our Rails Blog to Production

    ·17m
  84. 84

    Adding TailwindCSS to Rails

    ·7m
  85. 85

    Authenticating Blog Admin Pages

    ·21m
  86. 86

    Adding a Blog Post Destroy Action and Refactoring

    ·12m
  87. 87

    Edit & Update Blog Post Actions

    ·12m
  88. 88

    Creating New Blog Posts

    ·11m
  89. 89

    Adding a New Blog Post Action

    ·8m
  90. 90

    Adding a Blog Post Show Action

    ·16m
  91. 91

    Adding a Blog Index Action

    ·11m
  92. 92

    Creating A Blog Post Model

    ·10m
  93. 93

    Rails Application Structure Explained

    ·21m
  94. 94

    Creating a New Rails app

    ·6m
  95. 95

    Classes & Objects in Ruby

    ·47m
  96. 96

    Loops & Blocks in Ruby

    ·47m
  97. 97

    Refactoring our Ruby code

    ·42m
  98. 98

    Methods & Functions in Ruby

    ·26m
  99. 99

    How to Configure Multiple Databases with Rails

    This episode explains how to configure multiple databases in a Rails application, focusing on the solid gems introduced in Rails 8.

    ·20m
  100. 100

    Deploying Rails 8 with Hatchbox

    The host introduces Hatchbox for deploying Rails apps and demonstrates creating a simple blog app with Rails, Postgres, and Tailwind.

    ·31m
  101. 101

    ActiveRecord in_order_of

    Colin from GoRails demonstrates how to use the in_order_of method in Active Record to sort tasks by custom status priority.

    Mar 23, 2026·5m
  102. 102

    Removing Duplication Using with_options

    This episode explains how to use the with_options method in Rails to factor out duplication of options passed to multiple method calls within a block.

    Mar 9, 2026·8m
  103. 103

    Normalize All ActiveRecord Attributes

    This episode explains how to normalize multiple optional ActiveRecord attributes in Rails to convert empty strings to nil.

    Feb 18, 2026·8m
  104. 104

    Dynamic Partial Rendering

    This episode demonstrates how to refactor a view with conditional rendering for different property types by using dynamic partials in Rails.

    Feb 16, 2026·11m
  105. 105

    Clean Up Optional Attributes in Rails with Normalizes

    How to use Rails' normalizes method to convert empty strings to nil for optional attributes in forms.

    Feb 11, 2026·2m
  106. 106

    valid with Context

    Hidden gem

    ["GoRails Screencasts centers on Rails validation contexts, starting from Basecamp's Fizzy app and a `signup.rb` model that passes a context into `complete`.", "The presenter builds a tiny blog app with `title` and `body` fields, then adds `save draft` and `publish` buttons to separate draft saving from publishing.", "`binding.irb` shows that the clicked button arrives as `params[:publish]`, which drives the choice between saving without validation and enforcing presence checks.", "The final refactor uses `save(context: :publish)` so the controller keeps the same behavior while removing the explicit validation branch."]

    Jan 19, 2026·19m·1 clip
  107. 107

    Markdown Renderer & MIME Type in Rails 8.1

    Nov 24, 2025·5m
  108. 108

    Module extend self

    Nov 17, 2025·5m
  109. 109

    Deploying Rails 8 with Hatchbox

    Hidden gem

    GoRails Screencasts walks through deploying a Rails 8 blog with Hatchbox, starting from `Rails new my blog` and ending on a live Hatchbox URL.

    Oct 20, 2025·31m·3 clips
  110. 110

    Rails 8.1 Local CI

    Oct 6, 2025·8m
  111. 111

    Ruby Pattern Matching

    Hidden gem

    Go Rails explains Ruby pattern matching as deep matching across nested arrays and hashes, with matched values bound to local variables.

    Aug 18, 2025·16m·1 clip
  112. 112

    Authentication Generator Test Helpers

    Jun 9, 2025·14m
  113. 113

    How to use action_text-trix with Rails

    Jun 4, 2025·4m
  114. 114

    How to use Enumerable with Ruby Classes

    Jun 2, 2025·12m
  115. 115

    How to add Lazy Load Hooks to Rails Plugins

    May 5, 2025·13m
  116. 116

    How to use CodeMirror with ImportMaps

    Apr 7, 2025·12m
  117. 117

    How to use params.expect in Rails 8+

    Jan 14, 2025·9m
  118. 118

    What is 'it' in Ruby 3.4

    Dec 30, 2024·10m
  119. 119

    Live Reloading with Hotwire Spark

    Dec 23, 2024·12m
  120. 120

    Creating a Ruby Gem for Black Friday sales

    Testing Thanksgiving across 2024, 2025, 2026, and 2029 exposes why the gem needs an explicit year argument.

    Nov 25, 2024·26m·1 clip
  121. 121

    How To Use Importmaps With Rails

    bin importmap downloads NPM packages into vendor JavaScript, avoiding runtime dependence on a CDN.

    Oct 29, 2024·18m·1 clip
  122. 122

    How to Configure Multiple Databases with Rails

    Oct 21, 2024·20m
  123. 123

    How To Add Impersonation To Rails Authentication Generator

    Oct 7, 2024·16m
  124. 124

    Customizing Rubocop Rails Omakase Rules

    Sep 30, 2024·7m
  125. 125

    Tests Without Assertions Warning in Rails 7.2

    Sep 16, 2024·6m
  126. 126

    How to use Omakase Rubocop Linter/Formatter Rules for Rails

    Aug 16, 2024·19m
  127. 127

    Defer Job Enqueues After Transaction Commit in Rails 7.2

    Aug 14, 2024·17m
  128. 128

    How to use the Browser Guard in Rails

    Aug 12, 2024·15m
  129. 129

    How to use Dev Containers with Rails

    Aug 9, 2024·24m
  130. 130

    How to Rate Limit Requests in Rails 7.2

    Aug 7, 2024·20m
  131. 131

    Adding Honeybadger Insights To The RubyGem

    Jul 22, 2024·23m
  132. 132

    Adding Timeouts to net-ssh with Mike Perham

    Jun 3, 2024·1h 20m
  133. 133

    Limiting & Clamping Values in Ruby

    May 27, 2024·5m
  134. 134

    Rubygems Trusted Publishing

    May 17, 2024·11m
  135. 135

    Refactoring Local Variables To Methods

    May 6, 2024·5m
  136. 136

    One Time Payments With Pay And Stripe

    Apr 15, 2024·39m
  137. 137

    Changing Contexts To Objects With IRB

    Apr 3, 2024·5m
  138. 138

    ActionController Modules in Rails

    Mar 8, 2024·3m
  139. 139

    Components with Phlex in Rails

    Feb 5, 2024·26m
  140. 140

    How to use Mission Control Jobs in Rails

    Jan 31, 2024·10m
  141. 141

    Single Table Inheritance (STI) with ActiveRecord in Rails

    Jan 22, 2024·13m
  142. 142

    Send Notifications in Rails with Noticed gem v2

    This episode covers the new Noticed Version 2 gem for Rails notifications, including setup and migration from version 1.

    Jan 16, 2024·24m
  143. 143

    Syncing Repositories with Ruby Scripts - Part 2

    This episode teaches how to convert a Ruby script into a gem with an executable for easy sharing and error handling.

    Dec 25, 2023·38m
  144. 144

    What's New In Ruby 3.3

    Dec 25, 2023·17m
  145. 145

    How to use Solid Queue in Rails with Active Job

    Dec 20, 2023·13m
  146. 146

    Syncing Repositories with Ruby Scripts - Part 1

    This episode demonstrates a Ruby script to automate syncing multiple Git repositories by fetching from upstream and pushing to origin.

    Dec 18, 2023·33m
  147. 147

    Template Locals in Rails 7.1

    Nov 20, 2023·9m
  148. 148

    HTML Learning Path - What is HTML and Why Learn It

    Nov 2, 2023·6m