<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv" -->

---
title: Bringing Rails into the Ractor-age | daily.dev
description: Shopify's Ruby team argues Ractors, Ruby's true multi-core parallelism primitive, are now viable in production and worth adopting in Rails. They explain how...
canonical: https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Bringing Rails into the Ractor-age | daily.dev
og:description: Shopify's Ruby team argues Ractors, Ruby's true multi-core parallelism primitive, are now viable in production and worth adopting in Rails. They explain how...
og:url: https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv
og:image: https://api.daily.dev/og/posts/eA9PqiLYv.png
og:image:alt: Bringing Rails into the Ractor-age
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Bringing Rails into the Ractor-age

**[GitHub](https://daily.dev/sources/railsatscale)** · 6 min read · 2 upvotes · 0 comments

## Summary

Shopify's Ruby team argues Ractors, Ruby's true multi-core parallelism primitive, are now viable in production and worth adopting in Rails. They explain how Ractors avoid the memory overhead of forking worker processes (used to bypass the GVL), and describe an experiment porting Basecamp's Writebook app to run on the Ractor-compatible Kino server. Results showed roughly 7x lower memory usage with 8 Ractors versus 8 forked Puma workers, with latency staying flat on light endpoints but increasing on heavier ones due to cross-Ractor dispatch overhead for non-Ractor-safe native extensions. The team's first Rails milestone is making a freshly scaffolded app fully Ractor-safe, with broader framework support (Active Job, Active Storage, Action Cable) planned afterward.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://railsatscale.com/2026-08-11-ractors-on-rails>

## Questions this post answers

### How much memory can Ractors save compared to forked Puma workers in a Rails app?

A pool of 8 Ractors used nearly 7 times less memory than 8 forked Puma workers serving the same load, measured as PSS (proportional set size), which fairly accounts for memory shared between forked workers. This was demonstrated using Basecamp's Writebook app served through the Ractor-compatible Kino web server, since Ractors share a single process instead of each worker holding its own copy of the app.

_Anyone weighing Ractors against forked workers for memory savings can track this ongoing work on daily.dev._

### Does using Ractors instead of forked workers increase request latency in Rails?

Latency stays essentially unchanged on lightweight endpoints, increases slightly but negligibly when a couple of database queries are funneled to the main Ractor via the Ractor Dispatch escape hatch, and clearly increases on heavy endpoints that require many cross-Ractor dispatches due to native extensions that aren't yet Ractor-compatible. Most of that overhead comes from the round-trip cost of dispatching work to the main Ractor.

_Developers deciding whether Ractors are ready for production Rails workloads can follow this benchmark data on daily.dev._

### What is Rails' first milestone for supporting Ruby Ractors?

The first milestone is making a freshly scaffolded Rails application fully Ractor-safe end to end, covering routing, the request/response cycle, view rendering, translation, database queries, the asset pipeline, and Active Support helpers. This lays the foundation for later extending Ractor support to Active Job, Active Storage, Action Cable, and non-eager-loaded local development environments.

_Rails developers planning for Ractor support can track this framework migration path on daily.dev._

## Similar posts on daily.dev

- [Ractor-age Rails: A How-To Guide](https://daily.dev/posts/ractor-age-rails-a-how-to-guide-6bfi7ymxr) · GitHub · 0 upvotes · 0 comments
- [Ractors: Real Parallelism in Ruby Without the GVL](https://daily.dev/posts/ractors-real-parallelism-in-ruby-without-the-gvl-hmgki5ufp) · RUBYLAND · 0 upvotes · 0 comments
- [What Puma, Falcon, and Pitchfork teach you about Ruby concurrency](https://daily.dev/posts/what-puma-falcon-and-pitchfork-teach-you-about-ruby-concurrency-o7hyud6gm) · The Miners · 0 upvotes · 0 comments
- [Issue \#814: Bringing Rails into the Ractor age — Ruby Weekly](https://daily.dev/posts/issue-814-bringing-rails-into-the-ractor-age-ruby-weekly-vch5zguhp) · Ruby Weekly · 0 upvotes · 0 comments
- [Ruby Concurrency Beyond Fibers: Threads, Ractors, and True Parallelism](https://daily.dev/posts/ruby-concurrency-beyond-fibers-threads-ractors-and-true-parallelism-wi0gwu4mk) · Saeloun · 0 upvotes · 0 comments

---

Tags: [#performance](https://daily.dev/tags/performance), [#ruby](https://daily.dev/tags/ruby), [#rails](https://daily.dev/tags/rails)

[View this post on daily.dev](https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Bringing Rails into the Ractor-age","url":"https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv"},"datePublished":"2026-08-23T12:17:02.630Z","dateModified":"2026-09-14T09:10:16.942Z","description":"Shopify's Ruby team argues Ractors, Ruby's true multi-core parallelism primitive, are now viable in production and worth adopting in Rails. They explain how...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5c01349284b899ca8d2102ebd3b4ad8c?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5c01349284b899ca8d2102ebd3b4ad8c?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"GitHub","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"GitHub","logo":"https://media.daily.dev/image/upload/s--KoQJwuta--/c_limit,w_256/f_auto,q_auto/v1787487419/logos/railsatscale?_a=BAMAMicg0","url":"https://daily.dev/sources/railsatscale"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"performance,ruby,rails","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"GitHub","item":"https://daily.dev/sources/railsatscale"},{"@type":"ListItem","position":3,"name":"Bringing Rails into the Ractor-age"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/bringing-rails-into-the-ractor-age-ea9pqilyv#faq","mainEntity":[{"@type":"Question","name":"How much memory can Ractors save compared to forked Puma workers in a Rails app?","acceptedAnswer":{"@type":"Answer","text":"A pool of 8 Ractors used nearly 7 times less memory than 8 forked Puma workers serving the same load, measured as PSS (proportional set size), which fairly accounts for memory shared between forked workers. This was demonstrated using Basecamp's Writebook app served through the Ractor-compatible Kino web server, since Ractors share a single process instead of each worker holding its own copy of the app. Anyone weighing Ractors against forked workers for memory savings can track this ongoing work on daily.dev."}},{"@type":"Question","name":"Does using Ractors instead of forked workers increase request latency in Rails?","acceptedAnswer":{"@type":"Answer","text":"Latency stays essentially unchanged on lightweight endpoints, increases slightly but negligibly when a couple of database queries are funneled to the main Ractor via the Ractor Dispatch escape hatch, and clearly increases on heavy endpoints that require many cross-Ractor dispatches due to native extensions that aren't yet Ractor-compatible. Most of that overhead comes from the round-trip cost of dispatching work to the main Ractor. Developers deciding whether Ractors are ready for production Rails workloads can follow this benchmark data on daily.dev."}},{"@type":"Question","name":"What is Rails' first milestone for supporting Ruby Ractors?","acceptedAnswer":{"@type":"Answer","text":"The first milestone is making a freshly scaffolded Rails application fully Ractor-safe end to end, covering routing, the request/response cycle, view rendering, translation, database queries, the asset pipeline, and Active Support helpers. This lays the foundation for later extending Ractor support to Active Job, Active Storage, Action Cable, and non-eager-loaded local development environments. Rails developers planning for Ractor support can track this framework migration path on daily.dev."}}]}
```

