RailsConf 2024
2024-05-07..2024-05-09
Detroit, United States
[RailsConf 2009, RailsConf 2011, RailsConf 2012, RailsConf 2013, RailsConf 2014, RailsConf 2015, RailsConf 2016, RailsConf 2017, RailsConf 2018, RailsConf 2019, RailsConf 2020 CE, RailsConf 2021, RailsConf 2022, RailsConf 2023, RailsConf 2024, RailsConf 2025]
who it's for
rails developers, ruby developers, full stack developers, test engineers, library and gem authors, engineering managers
topics
accessibility for backend teams; rails testing and profiling; log-driven debugging; async without background jobs; rails versioning at scale; ruby lsp and editor tooling; composite primary keys in Rails 7.1; building Rails plugins and gems; plain old Ruby objects (POROs) in rails; active record performance tuning; Hotwire and Turbo 8 landscape; Postgres with OpenAI recommendations
| title | author | length |
|---|---|---|
| Conference Welcome | Andy Croll, Adarsh Pandit | 22m |
Welcome gives concrete logistics: the Wi‑Fi passcode is displayed, headshot slots require reservation, workshops ask for simple prework, and lunch/coffee… | ||
| Opening Conference Keynote | Nadia Odunayo | 54m |
StoryGraph scales from a few hundred to over a million users while keeping the stack simple and shoestring costs: a Rails monorepo, background jobs to generate… | ||
| How to Accessibility if You’re Mostly Back-End | Hilary Stohs-Krause | 45m |
Back-end work changes accessibility in concrete ways: 16% of people have a disability, 20% have dyslexia, 8% of men are color blind, and over 10% of… | ||
| So writing tests feels painful. What now? | Stephanie Minn | 28m |
Adds a test with RSpec and Factory bot for TierWithTrialUpgrader that exercises a new SubscriptionNotifier.notify_trial_started side effect and hits a Stripe… | ||
| Ask your logs | Youssef Boulkaid | 28m |
Shows how Rails default multiline logs become structured JSON using Lograge, how logs stream to Elasticsearch and are explored in Kibana, and how a consistent… | ||
| How to make your application accessible (and keep it that way!) | Joel Hawksley | 43m |
Shows concrete wins and costs: GitHub runs ax scanner across ~100 public domains and 2,000 pages, drops violations from ~18 to near zero on targeted runs, and… | ||
| Ruby on Fails: effective error handling with... | Talysson Oliveira Cassiano | 30m |
Argues Rails apps need explicit, intentional error classes (inherit from StandardError, add data, e.g. ItemNotAvailable) and warns rescue_from Exception is… | ||
| Look Ma, No Background Jobs: A Peek into the Async Future | Manu J | 23m |
Shows how to replace background job queues for IO-bound work by running requests inline on Falcon using the Async gem and ruby fibers. Describes an… | ||
| Ruby & Rails Versioning at Scale | George Ma | 36m |
Shopify automates Rails upgrades across 300+ Ruby services by combining an upgrade calendar with tooling that actually performs steps not just proposes them A… | ||
| What's in a Name: From Variables to Domain-Driven Design | Karynn Ikeda | 29m |
Argues that naming is semiotics not style and demonstrates specifics: Rails copies controller instance variables into views so variable names must carry… | ||
| Crafting Rails Plugins | Chris Oliver | 43m |
Explains how to build a Rails plugin that actually hooks into the Rails lifecycle to add routes, configuration, migrations and to ship models, controllers… | ||
| From Cryptic Error Messages To Rails Contributor | Collin Jilbert | 28m |
Shows a concrete fix: change form_with model default from nil to false so passing nil raises an early, clear error; write a unit test, run bin/test, and open a… | ||
| Plain, Old, but Mighty: Leveraging POROs in Greenfield and... | Sweta Sanghavi | 39m |
Crowd‑platform work moves from prototype to live: a B2C crowdfunding product launches on schedule and the first campaign funds. The concrete claims are that… | ||
| A Rails server in your editor: Using Ruby LSP to extract runtime information | Andy Waite | 28m |
Shows that the Ruby LSP actually hooks into a running Rails process to read live state rather than guessing from source, surfacing database schema, migrations… | ||
| Implementing Native Composite Primary Key Support in Rails 7.1 | Nikita Vasilevsky | 21m |
Rails 7.1 adds native composite primary key support plus an ID_value accessor to read an ID column when the primary key becomes an array, a bulk where by… | ||
| Riffing on Rails: sketch your way to better designed code | Kasper Timm Hansen | 36m |
Claim: sketching design directly in a single Ruby scratch file yields rapid, low‑cost iterations that expose names responsibilities and relationships and… | ||
| Save Time with Custom Rails Generators | Garrett Dimon | 59m |
Shows how to build custom generators for Rails using generator templates, Thor hooks, and generator tests so routine scaffolding and boilerplate go from ten… | ||
| Closing Day 1 | Andy Croll | 05m |
Day one wraps with concrete next steps: a Ruby Friend mentorship program that pairs early career devs with volunteers, a morning keynote from John Horon then a… | ||
| Keynote: Startups on Rails in 2024 | Irina Nazarova | 52m |
Recent founders report concrete wins: small teams switched from Next.js to Rails and shipped a product that earned a $6M seed after Y Combinator, another… | ||
| Day 2 Welcome | Ufuk Kayserilioglu | 09m |
Agenda rundown and logistics that tell you whether to show up: hack day with open-source maintainers and color-coded tables and signage means anyone wanting… | ||
| Day 2 Keynote | John Hawthorn | 49m |
Vernier is a sampling profiler for Ruby 3.2+ that actually records wall‑time and allocation samples together, surfaces 890,000 allocations from a bundler demo… | ||
| From slow to go: Rails test profiling hands-on | Vladimir Dementyev | 02h 05m |
Uses StackProf and speed_scope and TestProf sampling and event profilers to find concrete bottlenecks: removing coverage cuts startup ~15% (10s → 8.5s)… | ||
| TDD for Absolute Beginners | Jason Swett | 28m |
Argues that the usual red‑green‑refactor mantra is often misleading and proposes a different, easier TDD approach that emphasizes concrete examples over rigid… | ||
| SQLite on Rails: From rails new to 50k concurrent users and everything in between | Stephen Margheim | 01h 56m |
SQLite on Rails: From rails new to 50k concurrent users and everything in between by Stephen Margheim Final
Learn how to build and deploy a Rails application… | ||
| Let’s Extend Rails With A Gem | Noel Rappin | 01h 44m |
Step‑by‑step walkthrough that starts from bundle gem and ends with gem push, showing a working gem scaffolded, configured, and published. Covers concrete… | ||
| Build High Performance Active Record Apps | Andrew Atkinson | 01h 52m |
In this workshop, you'll learn to leverage powerful Active Record capabilities to bring your applications to the next level. We'll start from scratch and focus… | ||
| This or that? Similar methods & classes in Ruby && Rails | Andy Andrea | 37m |
Practical differences matter: Range#cover vs include shows cover about twice as fast on small ranges and massively faster on huge ranges (include drops to… | ||
| Revisiting the Hotwire Landscape after Turbo 8 | Marco Roth | 32m |
Claims that Turbo 8 significantly reduces reliance on heavy client frameworks and can eliminate a separate front-end build step, demonstrating concrete… | ||
| Undervalued: The Most Useful Design Pattern | Jared Norman | 32m |
Argues that value objects are underused and, with Ruby's first-class support, become a practical tool for real systems. Shows concrete code patterns combining… | ||
| The Very Hungry Transaction | Daniel Colson | 34m |
A single database transaction grows into a liability: inserts plus hundreds or thousands of updates cause deadlock errors and lock timeouts, slow queries and… | ||
| Insights Gained from Developing a Hybrid Application Using... | John Pollard | 34m |
Build is a hybrid mobile app using Turbo-Native and Strada with a Rails backend, and about half of interactive screens end up implemented as native components… | ||
| Pairing with Intention: A Guide for Mentors | Alistair Norman | 37m |
Practical method for pairing that centers the mentee by starting with a clear learning objective then shaping sessions into measurable steps, using short… | ||
| From Request To Response And Everything In Between | Kevin Lesht | 36m |
Follow a single HTTP request through Puma to a Rails process, see threads vs processes, and measure where latency accumulates — queue time, service time… | ||
| Dungeons & Dragons & Rails | Joel Quenneville | 37m |
A working digital character sheet is built in Rails using Turbo instead of React, with live demo showing form handling, Turbo Frames and Turbo Streams powering… | ||
| Attraction Mailbox - Why I love Action Mailbox | Cody Norman | 34m |
Email becomes a first-class UI for common flows by routing messages into your app and turning them into records and jobs. Action Mailbox ingests mail via… | ||
| Dungeons and Developers: Uniting Experience Levels in... | Chantelle Isaacs | 31m |
Framework maps Dungeons & Dragons stats onto real team skills with a fillable Developer Character Sheet (QR code PDF provided) and a 0–5 self‑scoring. Key… | ||
| From RSpec to Jest: JavaScript testing for Rails devs | Stefanni Brasil | 35m |
A practical path from RSpec habits into JavaScript testing, focusing on Jest and concrete techniques: setting test data for front-end code, mock HTTP requests… | ||
| Glimpses of Humanity: My Game-Building AI Pair | Louis Antonopoulos | 47m |
Shows a Rails app co-developed with an AI partner called Atheniel-née-ChatGPT, documenting concrete workflows: iterative goal setting, a project plan… | ||
| Beyond senior: lessons from the technical career path | Dawn Richardson | 30m |
The principal engineer role is concrete: led a 2022 initiative to deliver a community product across five+ teams, coordinates cross‑functional work with design… | ||
| Progressive Web Apps with Ruby on Rails | Avi Flombaum | 35m |
A Rails app demonstrates a complete offline-first RSS reader that registers, installs, and activates a service worker registration flow, wires a Push API… | ||
| Using Postgres + OpenAI to power your AI Recommendation... | Chris Winslett | 45m |
Claims Postgres alone can run a recommendation engine by storing and querying OpenAI embeddings and avoiding a separate vector DB. Uses Rails + ActiveRecord to… | ||
| Day 3 Closing | Ufuk Kayserilioglu, Andy Croll | 08m |
Organizers say Ruby Central runs and maintains rubygems and bundler for the community keeping them operational and secure and treating CI and bundle installs… | ||
| Closing Keynote | Aaron Patterson | 45m |
Announcements hit specific work and numbers: Rails will enable wet by default in production and teams report about 15% performance improvement on real apps… | ||
| Recap | 06m | |
Sessions focus on Turbo and Hotwire and hands-on workshops; a hack day puts a hack day table around a single open-source project and produces concrete… | ||
| Conference Welcome | Andy Croll, Adarsh Pandit | 22m |
Welcome to RailsConf Detroit: Wi‑Fi details and the Wi‑Fi passcode are displayed, use the conference Slack and hashtags for reposts and staff updates, sign up… | ||
| Opening Conference Keynote | Nadia Odunayo | 54m |
Started on Rails in January 2019, this project becomes a book-discovery site that hits 1,000 users after two weeks of outreach, goes viral in June 2020, and… | ||
| How to Accessibility if You’re Mostly Back-End | Hilary Stohs-Krause | 45m |
Backend work affects accessibility through concrete, testable changes: use avoid abbreviations everywhere, pick descriptive names and underscores in APIs, run… | ||
| So writing tests feels painful. What now? | Stephanie Minn | 28m |
Painful RSpec work turns into a concrete refactor: an RSpec + FactoryBot test initially stubs Stripe::Subscription.new and stubs Trial.start, uses allow/expect… | ||
| Ask your logs | Youssef Boulkaid | 28m |
Shows how to stop treating logs as text and build a queryable pipeline that actually finds root causes. Converts Rails logs to JSON-structured Rails logger… | ||
| How to make your application accessible (and keep it that way!) | Joel Hawksley | 43m |
GitHub scales accessibility by measuring and owning outcomes: running axe scans across ~100 public domains and 2,000 pages to track violations, cutting many… | ||
| Ruby on Fails: effective error handling with... | Talysson Oliveira Cassiano | 30m |
Avoid rescuing rescue from exception or using raises as control flow; create specific error classes that inherit StandardError (example: CheckoutServiceError… | ||
| Look Ma, No Background Jobs: A Peek into the Async Future | Manu J | 23m |
Claims that external API calls and other IO-bound work no longer require background jobs because requests can yield to other work instead of blocking, using… | ||
| Ruby & Rails Versioning at Scale | George Ma | 36m |
Shopify automates Rails and Ruby upgrades across 300+ services by combining an upgrade calendar with tooling that patches Dependabot and RuboCop and… | ||
| What's in a Name: From Variables to Domain-Driven Design | Karynn Ikeda | 29m |
Argues that names are semantic signs not just labels and shows how Ruby and Rails conventions — pluralization, capitalization, question-mark methods — actually… | ||
| Crafting Rails Plugins | Chris Oliver | 43m |
A live walkthrough shows how to package features as a gem that hooks into Rails lifecycle, using Railtie and mountable engine patterns to add routes… | ||
| From Cryptic Error Messages To Rails Contributor | Collin Jilbert | 28m |
A Rails form error traced to a nil model causes either ParameterMissing or silent failures depending on context, so the fix changes form_with’s model default… | ||
| Plain, Old, but Mighty: Leveraging POROs in Greenfield and... | Sweta Sanghavi | 39m |
A team builds a crowdfunding product and launches a first customer on schedule; the project funds. The talk claims plain old Ruby objects cut cycle time by… | ||
| A Rails server in your editor: Using Ruby LSP to extract runtime... | Andy Waite | 28m |
Demonstrates that an editor language server uses live runtime data not just static analysis, claiming Ruby LSP connects into a running Rails runtime to extract… | ||
| Implementing Native Composite Primary Key Support in Rails 7.1 | Nikita Vasilevsky | 21m |
Rails 7.1 adds native composite primary key support so tables can use multiple columns as the primary key, with a new id_value helper to read an ID column when… | ||
| Riffing on Rails: sketch your way to better designed code | Kasper Timm Hansen | 36m |
Design work happens in a single Ruby file using Rails conventions and near-runnable code to sketch controllers, models, and names quickly; sessions run about… | ||
| Save Time with Custom Rails Generators | Garrett Dimon | 59m |
Shows how to write Rails generators that actually create files, add routes, run migrations and push matching tests so recurring tasks go from ten-minute to… | ||
| Closing Day 1 | Andy Croll | 05m |
Day two schedule preview lists breakfast at 9:00 then an intro by Ufuk and keynote from John Horon before the hack day opens this room with the wall rolled… | ||
| Keynote: Startups on Rails in 2024 | Irina Nazarova | 52m |
Recent startups are choosing Rails and shipping fast: a house-services app abandons Next.js, switches to Rails, joins Y Combinator and raises 6 million seed… | ||
| Day 2 Welcome | Ufuk Kayserilioglu | 09m |
Day two opens with a run-through of the schedule then moves into workshops, a full-day hack day and an afternoon pitch party that forms ad hoc teams… | ||
| Day 2 Keynote | John Hawthorn | 49m |
A new Ruby 3.2+ sampling profiler called Vernier records both wall-clock and allocation samples, plus GVL, ractor, thread states, GC activity and idle time; it… | ||
| From slow to go: Rails test profiling hands-on | Vladimir Dementyev | 02h 05m |
Workshop shows concrete steps and wins: run a sample of 100 examples with stackprof and verer to find boot and GC hotspots, turn off per-run coverage to cut… | ||
| TDD for Absolute Beginners | Jason Swett | 28m |
Argues that red‑green‑refactor teaching is misleading and replaces it with a concrete, easier sequence: write one specific failing example, make the smallest… | ||
| SQLite on Rails: From rails new to 50k concurrent... | Stephen Margheim | 01h 56m |
SQLite on Rails: From rails new to 50k concurrent users and everything in between by Stephen Margheim
Learn how to build and deploy a Rails application using… | ||
| Let’s Extend Rails With A Gem | Noel Rappin | 01h 44m |
Walks through creating a Ruby gem from bundle gem to gem push, shows how to expose configuration and integrate as a Rails Engine or simple initializer, and… | ||
| Build High Performance Active Record Apps | Andrew Atkinson | 01h 52m |
In this workshop, you'll learn to leverage powerful Active Record capabilities to bring your applications to the next level. We'll start from scratch and focus… | ||
| This or that? Similar methods & classes in Ruby && Rails | Andy Andrea | 37m |
Benchmarks on Ruby 3.3.0 compare many concrete alternatives: cover vs include shows cover ~2x faster on small ranges and massively faster on huge string ranges… | ||
| Revisiting the Hotwire Landscape after Turbo 8 | Marco Roth | 32m |
Revisits how Turbo 8 changes Hotwire workflows and gives a concrete Turbo 8 migration checklist with steps to replace ad‑hoc WebSocket logic by Turbo Streams… | ||
| Undervalued: The Most Useful Design Pattern | Jared Norman | 32m |
Explains how value objects now get first-class support in Ruby and shows concrete examples of modeling money, IDs, and validation objects that reduce coupling… | ||
| The Very Hungry Transaction | Daniel Colson | 34m |
A small ActiveRecord save grows into a multi-hundred-query transaction as inventory updates, HTTP calls to a fulfillment API, and background-job enqueueing get… | ||
| Insights Gained from Developing a Hybrid Application Using... | John Pollard | 34m |
Build of a hybrid Sprout mobile app uses Turbo-Native and Strada to render most UI as HTML while integrating key native features for performance and UX. A… | ||
| Pairing with Intention: A Guide for Mentors | Alistair Norman | 37m |
Break pair sessions into 15-minute micro-tasks, switch roles every 10–15 minutes with role switching, and focus each session on a single, testable feature such… | ||
| From Request To Response And Everything In Between | Kevin Lesht | 36m |
Follows a real Rails request from load balancer to response, explains how Puma processes (one request per thread) and multithreading interact with the Global… | ||
| Dungeons & Dragons & Rails | Joel Quenneville | 37m |
Builds a fully interactive Dungeons & Dragons character sheet implemented in Rails using Turbo instead of React, demonstrating how to handle real‑time edits… | ||
| Attraction Mailbox - Why I love Action Mailbox | Cody Norman | 34m |
Action Mailbox routes incoming email to controller-like mailboxes by address, header or regex and processes them with Action Mailbox ingress adapters (Postfix… | ||
| Dungeons and Developers: Uniting Experience Levels in... | Chantelle Isaacs | 31m |
Maps D&D mechanics onto team hiring and development with a practical Developer Character Sheet (PDF via QR): years at work become levels, technical skill is… | ||
| From RSpec to Jest: JavaScript testing for Rails devs | Stefanni Brasil | 35m |
Compares RSpec habits with Jest and shows concrete Jest recipes for Rails apps: configuring Jest, writing unit tests for plain modules and DOM-interacting… | ||
| Glimpses of Humanity: My Game-Building AI Pair | Louis Antonopoulos | 47m |
A Rails game gets built with an AI co-developer named Atheniel-née-ChatGPT, showing the exact prompts, code snippets, and git commits used to move from idea to… | ||
| Beyond senior: lessons from the technical career path | Dawn Richardson | 30m |
Principal-level work shifts from coding to coordinating: leads a 2022 community-product initiative that touches payments, checkout and integrations and… | ||
| Progressive Web Apps with Ruby on Rails | Avi Flombaum | 35m |
A Rails app builds an offline-first RSS reader that registers, installs, and activates a Service Workers script and uses the Push API to subscribe users to… | ||
| Using Postgres + OpenAI to power your AI Recommendation... | Chris Winslett | 45m |
Builds a working recommendation engine using Rails + ActiveRecord, stores OpenAI embeddings as vectors in Postgres and queries them with approximate nearest… | ||
| Day 3 Closing | Ufuk Kayserilioglu, Andy Croll | 08m |
Closing remarks summarize sponsors and logistics, announce that Ruby Central runs RubyGems and Bundler for the community, report that the conference theme is… | ||
| Closing Keynote | Aaron Patterson | 45m |
Announces concrete Rails and Ruby changes: Rails will enable YJIT in production by default and ships an initializer to enable JIT after boot, reporting about a… | ||
| nothing matches | ||