<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://rubyonrails.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://rubyonrails.org/" rel="alternate" type="text/html" /><updated>2026-08-07T15:30:05+00:00</updated><id>https://rubyonrails.org/feed.xml</id><title type="html">Ruby on Rails: Compress the complexity of modern web apps</title><subtitle>A full-stack web application framework written in Ruby, following the Model View Controller pattern, that includes everything you need to build modern database-backed web apps.</subtitle><entry><title type="html">Rails World 2026 update: Matz is coming to Austin</title><link href="https://rubyonrails.org/2026/8/7/rails-world-2026-matz-agenda" rel="alternate" type="text/html" title="Rails World 2026 update: Matz is coming to Austin" /><published>2026-08-07T00:00:00+00:00</published><updated>2026-08-07T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/8/7/rails-world-2026-matz-agenda</id><content type="html" xml:base="https://rubyonrails.org/2026/8/7/rails-world-2026-matz-agenda"><![CDATA[<p>Hi everyone!</p>

<p><a href="/world/2026">Rails World 2026</a> is just 47 days away, and we have a few fun updates for you. If you haven’t already, you can grab your ticket <a href="https://luma.com/rails-world-2026">here</a>.</p>

<p>Now for the updates:</p>

<p><strong>Matz is coming</strong></p>

<p>Big news first: <strong>Matz</strong> is coming to Rails World 2026! He’ll sit down with DHH on day 2 for a fireside chat. It’s been two years since <a href="https://www.youtube.com/watch?v=zPBbHu-BKpQ&amp;list=PLHFP2OPUpCeb182aDN5cKZTuyjn3Tdbqx&amp;index=4">the last chat in Toronto</a>, and so much has changed since then. We’re living in a different world, so we wanted to bring these two together on stage again to chat about Ruby, Rails, AI, and what the future holds for programming.</p>

<p>Attendees will be able to submit their questions beforehand. This session was made possible by the generous support of our Event Partner and sponsor, <strong>Shopify</strong>.</p>

<p><strong>Full agenda is live, app is coming</strong></p>

<p>The <a href="/world/2026/agenda">Rails World 2026 agenda</a> is now live, so you can start planning. No worries if you get caught in the Hallway track, all sessions will be recorded and published within two weeks after the event, and the Opening Keynote will be livestreamed (more on that soon).</p>

<p>The Rails World app is also coming soon with more specific information for ticket-holders, so you can build your schedule, join the networking events, and stay on track.</p>

<p><strong>Lightning talks are back</strong></p>

<p>We’re only able to host a Lightning Track each year if a sponsor steps up, and this year two did: <a href="https://sorcer.io/">Sorcer</a> and <a href="https://judoscale.com/">Judoscale</a>. Each sponsor will host one day of Lightning Tracks in the breaks, so if you’re attending Rails World and have a talk in mind, the Lightning Track CFP is now open (ticket holders have been sent the link today so please check your inboxes). We’re looking for talks that inspire, teach, or spark a good debate, as long as you can deliver it in 5 to 10 minutes.</p>

<p><strong>Thank you to our Platinum sponsors</strong></p>

<p><strong><a href="https://www.appsignal.com/">AppSignal</a></strong> returns to Rails World as a Platinum Sponsor for the fourth year in a row! A long-time supporter of the Rails community and a member of the Rails Foundation, they’ve been part of the event since the very first Rails World in 2023.</p>

<p>We hear they’re bringing their sjoelbak tables, stroopwafels…and a load of new features to demo live in their booth.</p>

<p>We are pleased to welcome <strong><a href="https://www.procore.com/">Procore</a></strong> as a first time sponsor at the Platinum level. They have generously offered to host the <a href="/world/2026/rails-at-scale">Rails at Scale Summit</a> in their office in downtown Austin, and will co-sponsor the Closing Party with Shopify.</p>

<p>Procore has one of the largest Rails engineering teams in the world, and is a founding member of the Rails Foundation. We’re grateful to have their support at Rails World this year.</p>

<p>Thank you to both of our Platinum sponsors.</p>

<p><strong>And so much more.</strong></p>

<p>We have a lot more to share. Pair programming with <strong>Test Double</strong>, a board game night, live music, a great Closing Party (you know how <strong>Shopify</strong> throws a great one - this time they are joined by <strong>Procore</strong>), and even - yes, this is true - a little Texas style bull riding thanks to <strong>thoughbot</strong>. But all that and more will be in the next update.</p>

<p>For now, there’s still time to <a href="https://luma.com/rails-world-2026">grab a ticket</a>, join us in person, and discover it all for yourself.</p>

<p>Looking forward to meeting you soon!</p>

<p>The Rails World team</p>]]></content><author><name>Amanda Perino</name></author><category term="news," /><category term="foundation" /><summary type="html"><![CDATA[Hi everyone!]]></summary></entry><entry><title type="html">`alias_attribute` is back, pluck on unsaved records, and more!</title><link href="https://rubyonrails.org/2026/8/7/this-week-in-rails" rel="alternate" type="text/html" title="`alias_attribute` is back, pluck on unsaved records, and more!" /><published>2026-08-07T00:00:00+00:00</published><updated>2026-08-07T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/8/7/this-week-in-rails</id><content type="html" xml:base="https://rubyonrails.org/2026/8/7/this-week-in-rails"><![CDATA[<p>Some things that should have worked all along finally do… like <code class="language-plaintext highlighter-rouge">alias_attribute</code> in associations, <code class="language-plaintext highlighter-rouge">pluck</code> on unsaved records, <code class="language-plaintext highlighter-rouge">search_field</code> with <code class="language-plaintext highlighter-rouge">autosave: true</code>. The rest of the week went into sharper SQL logs, sturdier job continuations, and more Ractor-ready registries. Here’s what’s new in Rails:</p>

<p><a href="https://rubyonrails.org/world/2026/">Matz is coming to Rails World 2026!</a>   <br />
Ruby creator Yukihiro “Matz” Matsumoto is coming to Rails World 2026! He’ll join DHH, Aaron Patterson, Robby Russell, and the rest of the lineup in Austin this September, and the full conference agenda is now live. If you’ve been waiting to see what’s planned before grabbing a ticket or planning your schedule, now’s the time to take a look.</p>

<p><a href="https://github.com/rails/rails/pull/58372">Fix pluck ignoring records assigned to a new record’s association</a> <br />
When the parent is unsaved, <code class="language-plaintext highlighter-rouge">CollectionProxy#pluck</code> read the null scope instead of in-memory records assigned to the association. After a regression that made <code class="language-plaintext highlighter-rouge">ids</code> delegate to <code class="language-plaintext highlighter-rouge">pluck</code>, both returned empty on a new record even with tags already assigned. <code class="language-plaintext highlighter-rouge">pluck</code> now reads the target records directly, so <code class="language-plaintext highlighter-rouge">post.tags.pluck(:name)</code> works before save — and <code class="language-plaintext highlighter-rouge">ids</code> follows along.</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">post</span> <span class="o">=</span> <span class="no">Post</span><span class="p">.</span><span class="nf">new</span>
<span class="n">post</span><span class="p">.</span><span class="nf">tags</span> <span class="o">=</span> <span class="p">[</span><span class="no">Tag</span><span class="p">.</span><span class="nf">create!</span><span class="p">(</span><span class="ss">name: </span><span class="s2">"ruby"</span><span class="p">)]</span>

<span class="n">post</span><span class="p">.</span><span class="nf">tags</span><span class="p">.</span><span class="nf">pluck</span><span class="p">(</span><span class="ss">:name</span><span class="p">)</span> <span class="c1"># =&gt; ["ruby"]</span>
</code></pre></div></div>

<p><a href="https://github.com/rails/rails/pull/58348">Restore alias_attribute support in associations</a><br />
Since Rails 4.2, association reads bypassed <code class="language-plaintext highlighter-rouge">read_attribute</code> for an internal fast path that skipped alias resolution. An <code class="language-plaintext highlighter-rouge">alias_attribute</code> on the owner’s foreign key or the target’s primary key was silently ignored; production apps worked around it by overriding <code class="language-plaintext highlighter-rouge">_read_attribute</code> itself. The performance gap has closed enough that associations honor aliases again.</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Post</span> <span class="o">&lt;</span> <span class="no">ApplicationRecord</span>
  <span class="n">alias_attribute</span> <span class="ss">:writer_id</span><span class="p">,</span> <span class="ss">:author_id</span>
  <span class="n">belongs_to</span> <span class="ss">:author</span><span class="p">,</span> <span class="ss">foreign_key: :writer_id</span>
<span class="k">end</span>

<span class="n">post</span><span class="p">.</span><span class="nf">author</span> <span class="c1"># reads FK via alias</span>
</code></pre></div></div>

<p><a href="https://github.com/rails/rails/pull/58135">Add query predicate hooks for Active Record types</a><br />
Types can override <code class="language-plaintext highlighter-rouge">transforms_query_predicates?</code>, <code class="language-plaintext highlighter-rouge">query_attribute</code>, and <code class="language-plaintext highlighter-rouge">query_value</code> to customize how hash <code class="language-plaintext highlighter-rouge">where</code> predicates are built, without changing normal casting or serialization. That lets a MySQL UUID column stored in <code class="language-plaintext highlighter-rouge">binary(16)</code> accept readable UUID strings while rendering <code class="language-plaintext highlighter-rouge">id = UUID_TO_BIN(?)</code>, or compare text through a normalized expression such as <code class="language-plaintext highlighter-rouge">lower(name) = lower(?)</code>.</p>

<p><a href="https://github.com/rails/rails/pull/58336">Fix search_field raising NameError when passed autosave: true</a><br />
The documented <code class="language-plaintext highlighter-rouge">autosave: true</code> option never worked. <code class="language-plaintext highlighter-rouge">SearchField#render</code> called <code class="language-plaintext highlighter-rouge">request</code> directly, but tag objects have no access to the request, so every call raised <code class="language-plaintext highlighter-rouge">NameError</code>. It now reads from <code class="language-plaintext highlighter-rouge">@template_object.request</code>, so the reversed host lands in the <code class="language-plaintext highlighter-rouge">autosave</code> attribute as documented.</p>

<p><a href="https://github.com/rails/rails/pull/58045">Fix continuation step cursors losing their type when a job is interrupted and resumed</a><br />
Cursors were persisted as raw JSON, so a <code class="language-plaintext highlighter-rouge">Date</code>, <code class="language-plaintext highlighter-rouge">Time</code>, or GlobalID cursor came back as a <code class="language-plaintext highlighter-rouge">String</code> after interrupt and resume — breaking resume logic such as <code class="language-plaintext highlighter-rouge">cursor.beginning_of_day</code>. Cursors now serialize through <code class="language-plaintext highlighter-rouge">ActiveJob::Arguments</code>, the same path job arguments use, so the resumed step sees the same object it set before the interruption.</p>

<p><a href="https://github.com/rails/rails/pull/58274">Allow prepared statements with query log tags</a><br />
Query log tags previously forced prepared statements off. To keep them enabled alongside tagged queries, set <code class="language-plaintext highlighter-rouge">config.active_record.disable_prepared_statements = false</code>.</p>

<p><a href="https://github.com/rails/rails/pull/58312">Show parameter markers for casted binds in SQL logs and EXPLAIN</a><br />
Casted binds — plain arrays of values rather than <code class="language-plaintext highlighter-rouge">ActiveModel::Attribute</code>s — logged as <code class="language-plaintext highlighter-rouge">[[nil, "abcd"]]</code> because there was no column name to pair with each value. They now show positional markers such as <code class="language-plaintext highlighter-rouge">[["$1", "abcd"]]</code>, matching the <code class="language-plaintext highlighter-rouge">$1</code> placeholder in the SQL.</p>

<p><a href="https://github.com/rails/rails/pull/58254">Make CommandRecorder#record and #inverse_of private</a><br />
These are internal APIs on <code class="language-plaintext highlighter-rouge">ActiveRecord::Migration::CommandRecorder</code>. Callers should use the public migration methods (<code class="language-plaintext highlighter-rouge">create_table</code>, <code class="language-plaintext highlighter-rouge">add_column</code>, and so on) directly, and combine them with <code class="language-plaintext highlighter-rouge">revert</code> to record inverted commands.</p>

<p><a href="https://github.com/rails/rails/pull/57994">Make Mime types ractor-shareable</a><br />
The <code class="language-plaintext highlighter-rouge">Mime::Type</code> registry is frozen at eager load, with types initialized as frozen objects. Registering or unregistering MIME types after application initialization is now deprecated — do that in an initializer instead.</p>

<p><a href="https://github.com/rails/rails/pull/57948">Make the Action View dependency tracker registry Ractor-shareable</a><br />
The dependency tracker registry can be shared across Ractors when the application opts in via <code class="language-plaintext highlighter-rouge">Rails.application.ractorize!</code>. Registering trackers after initialization is deprecated; wrap registration in <code class="language-plaintext highlighter-rouge">ActiveSupport.on_load(:action_view)</code> during boot instead.</p>

<p>A few deprecations landed this week:</p>

<p><a href="https://github.com/rails/rails/pull/58347">Deprecate write_attribute(:id, value)</a>, <a href="https://github.com/rails/rails/pull/58297">positional #insert arguments</a>, and <a href="https://github.com/rails/rails/pull/58323">passing binds to #insert, #update, and #delete</a></p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">write_attribute(:id, value)</code> still routed to the primary key column. Use <code class="language-plaintext highlighter-rouge">#id=</code> on models whose primary key is not named <code class="language-plaintext highlighter-rouge">id</code>, matching the read-side deprecation from Rails 7.1.</li>
  <li>The positional <code class="language-plaintext highlighter-rouge">pk</code>, <code class="language-plaintext highlighter-rouge">id_value</code>, and <code class="language-plaintext highlighter-rouge">sequence_name</code> arguments to <code class="language-plaintext highlighter-rouge">#insert</code> are deprecated. Pass <code class="language-plaintext highlighter-rouge">returning:</code> in place of <code class="language-plaintext highlighter-rouge">pk</code>.</li>
  <li>The separate <code class="language-plaintext highlighter-rouge">binds</code> positional on <code class="language-plaintext highlighter-rouge">#insert</code>, <code class="language-plaintext highlighter-rouge">#update</code>, and <code class="language-plaintext highlighter-rouge">#delete</code> is deprecated. Pass <code class="language-plaintext highlighter-rouge">Arel.sql("... ?", *binds)</code> instead:</li>
</ul>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">connection</span><span class="p">.</span><span class="nf">insert</span><span class="p">(</span><span class="no">Arel</span><span class="p">.</span><span class="nf">sql</span><span class="p">(</span><span class="s2">"INSERT INTO topics (title) VALUES (?)"</span><span class="p">,</span> <span class="s2">"hello"</span><span class="p">))</span>
</code></pre></div></div>

<p><em>You can view the whole list of changes <a href="https://github.com/rails/rails/compare/@%7B2026-07-31%7D...main@%7B2026-08-07%7D">here</a>.</em>
<em>We had <a href="https://contributors.rubyonrails.org/contributors/in-time-window/20260731-20260807">28 contributors</a> to the Rails codebase this past week!</em></p>

<p>Until next time!</p>

<p><em><a href="https://world.hey.com/this.week.in.rails">Subscribe</a> to get these updates mailed to you.</em></p>]]></content><author><name>Emmanuel Hayford</name></author><category term="news" /><summary type="html"><![CDATA[Some things that should have worked all along finally do… like alias_attribute in associations, pluck on unsaved records, search_field with autosave: true. The rest of the week went into sharper SQL logs, sturdier job continuations, and more Ractor-ready registries. Here’s what’s new in Rails:]]></summary></entry><entry><title type="html">Faster i18n loading, thread-safe routes, and more!</title><link href="https://rubyonrails.org/2026/7/31/this-week-in-rails" rel="alternate" type="text/html" title="Faster i18n loading, thread-safe routes, and more!" /><published>2026-07-31T00:00:00+00:00</published><updated>2026-07-31T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/31/this-week-in-rails</id><content type="html" xml:base="https://rubyonrails.org/2026/7/31/this-week-in-rails"><![CDATA[<p>Hi, it’s <a href="https://www.saeloun.com/team/vipul/">Vipul</a>. Let’s explore this week’s
changes in the Rails codebase.</p>

<hr />

<p><a href="https://rubyonrails.org/2026/7/29/nominations-2026-rails-luminary">Nominations are open for the 2026 Rails Luminary Awards</a><br />
The Rails Foundation announced that nominations are open through August 21.
The awards recognize people who have significantly advanced Rails for the
benefit of the community.</p>

<p><a href="https://rubyonrails.org/2026/7/29/Rails-Versions-7-2-3-2-8-0-5-1-and-8-1-3-1-have-been-released">Rails versions 7.2.3.2, 8.0.5.1, and 8.1.3.1 have been released</a><br />
These security releases address a possible arbitrary file read and remote code
execution vulnerability in Active Storage variant processing. Please upgrade
as soon as possible.</p>

<p><a href="https://github.com/rails/rails/pull/58199">Stop filtering i18n paths on initialize</a><br />
Removes redundant path-globbing work during i18n initialization, cutting the
load time from 400 ms to about 250 ms in one application with thousands of
locale files.</p>

<p><a href="https://github.com/rails/rails/pull/58211">Pass scheme to token authentication block in http_authentication</a><br />
Token authentication methods now yield the authentication <code class="language-plaintext highlighter-rouge">scheme</code> as a
normalized symbol to the authentication block. They also support requiring a
specific scheme and returning the appropriate RFC 9110 challenge response.</p>

<p><a href="https://github.com/rails/rails/pull/58225">Make lazy route loading thread-safe</a><br />
Route drawing state moved from a boolean to a three-state flag guarded by a
reentrant <code class="language-plaintext highlighter-rouge">Monitor</code>. This fixes a race where concurrent threads could dispatch
requests against a half-drawn route set.</p>

<p><a href="https://github.com/rails/rails/pull/58226">Deprecate <code class="language-plaintext highlighter-rouge">TransactionState</code> predicates</a>, <a href="https://github.com/rails/rails/pull/58297">positional arguments to <code class="language-plaintext highlighter-rouge">#insert</code></a>, and <a href="https://github.com/rails/rails/pull/58310"><code class="language-plaintext highlighter-rouge">binds</code> passed to <code class="language-plaintext highlighter-rouge">to_sql</code></a><br />
A few cleanup deprecations landed this week:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">TransactionState#fully_committed?</code>, <code class="language-plaintext highlighter-rouge">#fully_rolledback?</code>, <code class="language-plaintext highlighter-rouge">#fully_completed?</code>,
and <code class="language-plaintext highlighter-rouge">#nullify!</code> are deprecated in favor of <code class="language-plaintext highlighter-rouge">#committed?</code>, <code class="language-plaintext highlighter-rouge">#rolledback?</code>, and
<code class="language-plaintext highlighter-rouge">#completed?</code>.</li>
  <li>The positional <code class="language-plaintext highlighter-rouge">pk</code>, <code class="language-plaintext highlighter-rouge">id_value</code>, and <code class="language-plaintext highlighter-rouge">sequence_name</code> arguments to <code class="language-plaintext highlighter-rouge">#insert</code>
are deprecated. Callers can use <code class="language-plaintext highlighter-rouge">returning:</code> in place of <code class="language-plaintext highlighter-rouge">pk</code>.</li>
  <li>The long-unused <code class="language-plaintext highlighter-rouge">binds</code> argument to <code class="language-plaintext highlighter-rouge">to_sql</code> is now deprecated instead of
being silently ignored.</li>
</ul>

<p><a href="https://github.com/rails/rails/pull/58249">Extract <code class="language-plaintext highlighter-rouge">table_name:</code> as an explicit keyword argument in join table helpers</a><br />
Migration join table helpers now accept <code class="language-plaintext highlighter-rouge">table_name:</code> as an explicit keyword
argument instead of removing it from an options hash as a side effect.</p>

<p><a href="https://github.com/rails/rails/pull/58279">Resolve the single best template without sorting the whole set</a><br />
Template resolution now finds the best match in one pass and binds locals only
for the winner instead of sorting and binding every candidate.</p>

<p><a href="https://github.com/rails/rails/pull/58290">Support a single column name for <code class="language-plaintext highlighter-rouge">#insert</code>’s <code class="language-plaintext highlighter-rouge">returning:</code></a><br />
<code class="language-plaintext highlighter-rouge">returning:</code> now accepts a single column name and returns that column’s value
directly. Previously it accepted only arrays, forcing callers to unwrap a
one-element result.</p>

<p><a href="https://github.com/rails/rails/pull/58108">Allow <code class="language-plaintext highlighter-rouge">thread_mattr</code> readers and writers to be used in a Ractor</a><br />
Removes memoization of the per-thread key so <code class="language-plaintext highlighter-rouge">thread_mattr</code> readers and writers
work safely in Ractors. Access remains in the nanosecond range despite the
additional lookup.</p>

<p><a href="https://github.com/rails/rails/pull/57854">Make controller middleware Ractor-safe</a><br />
Uses a copy-on-write approach so controller middleware stacks can be shared
safely across Ractors. A proxy refreezes the stack after direct method calls.</p>

<p><a href="https://github.com/rails/rails/pull/58296">Refactor insert <code class="language-plaintext highlighter-rouge">returning:</code> handling to take <code class="language-plaintext highlighter-rouge">QueryIntent</code> directly</a><br />
Insert <code class="language-plaintext highlighter-rouge">RETURNING</code> handling moved from raw SQL string manipulation to
<code class="language-plaintext highlighter-rouge">QueryIntent</code>. Arel-based inserts can now set <code class="language-plaintext highlighter-rouge">RETURNING</code> directly on the AST.</p>

<p><a href="https://github.com/rails/rails/pull/58309">Rename <code class="language-plaintext highlighter-rouge">arel</code> to <code class="language-plaintext highlighter-rouge">arel_or_sql</code></a><br />
Connection methods such as <code class="language-plaintext highlighter-rouge">insert</code>, <code class="language-plaintext highlighter-rouge">update</code>, <code class="language-plaintext highlighter-rouge">delete</code>, and <code class="language-plaintext highlighter-rouge">explain</code> accept
either an Arel manager or a raw SQL string but used inconsistent parameter
names. They now consistently use <code class="language-plaintext highlighter-rouge">arel_or_sql</code>.</p>

<p><a href="https://github.com/rails/rails/pull/58312">Show parameter markers for casted binds in SQL logs and EXPLAIN</a><br />
SQL logs and EXPLAIN output now show casted binds with positional markers such
as <code class="language-plaintext highlighter-rouge">$1</code> instead of <code class="language-plaintext highlighter-rouge">[nil, value]</code>, making each value’s position clear.</p>

<p><em>You can view the whole list of changes <a href="https://github.com/rails/rails/compare/@%7B2026-07-24%7D...main@%7B2026-07-31%7D">here</a>.</em><br />
<em>We had <a href="https://contributors.rubyonrails.org/contributors/in-time-window/20260724-20260731">25 contributors</a> to the Rails codebase this past week!</em></p>

<p>Until next time!</p>

<p><em><a href="https://world.hey.com/this.week.in.rails">Subscribe</a> to get these updates mailed to you.</em></p>]]></content><author><name>vipulnsward</name></author><category term="news" /><summary type="html"><![CDATA[Hi, it’s Vipul. Let’s explore this week’s changes in the Rails codebase.]]></summary></entry><entry><title type="html">Rails Versions 7.2.3.2, 8.0.5.1, and 8.1.3.1 have been released!</title><link href="https://rubyonrails.org/2026/7/29/Rails-Versions-7-2-3-2-8-0-5-1-and-8-1-3-1-have-been-released" rel="alternate" type="text/html" title="Rails Versions 7.2.3.2, 8.0.5.1, and 8.1.3.1 have been released!" /><published>2026-07-29T19:00:00+00:00</published><updated>2026-07-29T19:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/29/Rails-Versions-7-2-3-2-8-0-5-1-and-8-1-3-1-have-been-released</id><content type="html" xml:base="https://rubyonrails.org/2026/7/29/Rails-Versions-7-2-3-2-8-0-5-1-and-8-1-3-1-have-been-released"><![CDATA[<p>Hi friends!</p>

<p>Rails Versions 7.2.3.2, 8.0.5.1, and 8.1.3.1 have been released!</p>

<p>These are security patches addressing 1 security issues:</p>

<ul>
  <li>A possible arbitrary file read and remote code execution in Active Storage variant processing</li>
</ul>

<p>We strongly recommend upgrading as soon as possible.</p>

<p>Older versions of Rails are unsupported, and users are recommended to upgrade to at least the 7.2 series. See our <a href="https://rubyonrails.org/maintenance">maintenance policy</a> for details.</p>

<p>Here is more information about the security issue that these releases address:</p>

<ul>
  <li><a href="https://discuss.rubyonrails.org/t/cve-2026-66066-possible-arbitrary-file-read-and-remote-code-execution-in-active-storage-variant-processing/91432#p-267668-impact-1">CVE-2026-66066 Possible arbitrary file read and remote code execution in Active Storage variant processing</a></li>
</ul>

<h2 id="sha-256">SHA-256</h2>

<p>If you’d like to verify that your gems are the same as the ones we’ve uploaded,
please use these SHA-256 hashes.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ddc90d11dd88086d78ace03407fe3c2a3f5c8853c3c3046313db5ed823ef3312  pkg/activesupport-7.2.3.2.gem
3777c67cd8dd1560f30387523013dacb370a0a1cf532037410887819e4416927  pkg/activemodel-7.2.3.2.gem
e62d24ba7e5f820d24ed122eb9225491b0aaa8398778783b400067c3467285c7  pkg/activerecord-7.2.3.2.gem
42bfd966040c93271dfa9f3243d73c40aa0228108696f956e1f287f3b02edc01  pkg/actionview-7.2.3.2.gem
c1fbb1c4df0f2473ee064ab1412fc2a44c2c2ef337924c5ba3c7998c8529652b  pkg/actionpack-7.2.3.2.gem
b83fa070898911823f0c4cb8c0d1d25dabb5d00f18379d5b4fe01b84e173a93a  pkg/activejob-7.2.3.2.gem
45a6c326872867cdb28d2960d236c3c8fa4ff1198e9bc7ece4ddc3810b67b759  pkg/actionmailer-7.2.3.2.gem
04ffd91519942bae45f443bfc166308e6eb17870870cdfc1ca36bc95273c6b57  pkg/actioncable-7.2.3.2.gem
863cb4b21b83505555be2addb939fefb856ab05f6c6d24bab00d6f1a7e4edbfc  pkg/activestorage-7.2.3.2.gem
d19f6e98c5b630c391e14ce1a830f199f249bf3fd6208392f92d232a7a6d8ca5  pkg/actionmailbox-7.2.3.2.gem
19ab7e2a07ab976a5456a9aa98b93e1b899a7729b931ca1e9e01a3e8bd33f0b0  pkg/actiontext-7.2.3.2.gem
f626c6dfcc00a9f85b139619cfac4a648934c93e36fe5b9242184b9f45ffc29e  pkg/railties-7.2.3.2.gem
279290679f9005b0f79514f953a2af613f95de7baa94cbd87744c09122c1113c  pkg/rails-7.2.3.2.gem
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>329a4280c4fbcfcf338ae2cb9df28b0b14527929dba105e10b3604516d998710  pkg/activesupport-8.0.5.1.gem
559be32aa9c40db7a3ee0aef926d4508a9ebd22f96f7276c11326d21a7dff4a4  pkg/activemodel-8.0.5.1.gem
9252968fce404d75eb17092498a440d472167f2f8deee32b4658d6552b1eeea7  pkg/activerecord-8.0.5.1.gem
472a108b9cc2295c4ac3ff09b028045e619875801f48c556f0085210b9cb1440  pkg/actionview-8.0.5.1.gem
a5595c9d824d68884ddc4d3965ab78c897760d3752e190df7efe897371caa1eb  pkg/actionpack-8.0.5.1.gem
142407a21b6c3cbc6ddd92ca111ac18ea5c40298eb94d81845cd897a072a6880  pkg/activejob-8.0.5.1.gem
c3d2b3f96e1989ea25f51699786a97fcb2536eb7abfc2a667cb8f2376ec08403  pkg/actionmailer-8.0.5.1.gem
5adb700c605a7ef7628f87dc7a6da20cd5f0ceac782a59055c864ea51a77d7c7  pkg/actioncable-8.0.5.1.gem
239742932b2fdcf0ead175e0889dbd385a36da2168fd7bde023aaad88ef745f2  pkg/activestorage-8.0.5.1.gem
f8b72eadf53b3e285df8f2d1f6533012abf5a0a001180abe436aea3139eeaed6  pkg/actionmailbox-8.0.5.1.gem
370e90d35feb4313fc18ccef658776427d5bdd13126f266933b828a77e2125b2  pkg/actiontext-8.0.5.1.gem
da1958e1d9dab04691a2f8721b3ff7fab323715d37f103c19972dedfd644d5c7  pkg/railties-8.0.5.1.gem
c91cefbf38881876ddbe67b5e0246eb985d27d60c6bb1cd7034b4261de0ba495  pkg/rails-8.0.5.1.gem
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>85458765f25ea48b9019c46b6bb3fa5683197bf4280d9f06710a6e8d7a831376  pkg/activesupport-8.1.3.1.gem
99cc02ce2faec371d14440949d85787ebd23a907c9baef0a9d4bcd4d21888f88  pkg/activemodel-8.1.3.1.gem
0a2fb6c28f4938f6b013a3a549bec0a7e37d535f3dc8990e804bcc3258c0403b  pkg/activerecord-8.1.3.1.gem
2da68b8414c47b43bfbed1ce69c5afe1c04f78c267aacb5660a4cab5ca12cfb6  pkg/actionview-8.1.3.1.gem
974cb7154548e81f470b1b0f247b99cb38e87825899dca58610596e2817723d0  pkg/actionpack-8.1.3.1.gem
1c8dd275df930df40deecffec63d913a550a33fd94bd298f69721dd96939954a  pkg/activejob-8.1.3.1.gem
88ea441b28ff02a0c6c006468892642a3d9942affce9d294e81a74504aa5c43c  pkg/actionmailer-8.1.3.1.gem
e318528295c878a3efdfe25f0f2267c80cb7a76eba41bb5f64d44aa380a3d91b  pkg/actioncable-8.1.3.1.gem
f555254f387b1cffa499d2fd3115d12635eadc5b15206a8534316a67036163ef  pkg/activestorage-8.1.3.1.gem
5f704972097d843ade8e435e93694a1dac732b926df1717aceba1f3840082b1c  pkg/actionmailbox-8.1.3.1.gem
5da729d833d1a29cddb1eee938878e55e503d2613e00e735f5daf58c2ba98af2  pkg/actiontext-8.1.3.1.gem
2388a232579a00cefea4487de66c8553c3408c1300abdc6cf1799d86ffb04487  pkg/railties-8.1.3.1.gem
ccd11a36bfc171bf9c66d585d14c0ece91c0c9dde840aae60c0118d6f5c9c52a  pkg/rails-8.1.3.1.gem
</code></pre></div></div>]]></content><author><name>rafaelfranca</name></author><category term="releases" /><summary type="html"><![CDATA[Hi friends!]]></summary></entry><entry><title type="html">Nominations open for the 2026 Rails Luminary Awards</title><link href="https://rubyonrails.org/2026/7/29/nominations-2026-rails-luminary" rel="alternate" type="text/html" title="Nominations open for the 2026 Rails Luminary Awards" /><published>2026-07-29T00:00:00+00:00</published><updated>2026-07-29T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/29/nominations-2026-rails-luminary</id><content type="html" xml:base="https://rubyonrails.org/2026/7/29/nominations-2026-rails-luminary"><![CDATA[<p>Every year, Rails gets a little better. A little faster, a little safer, a little easier to work with. And none of that happens on its own.</p>

<p>The <strong>Rails Luminary Awards</strong> exist to celebrate those contributions, acknowledging those in the community who have significantly advanced Rails for the benefit of all, and <strong>the nominations for 2026 are now open</strong>.</p>

<p>If you know of someone who has consistently gone above and beyond to contribute to the framework, triaging bugs, improving performance, adding helpful features, etc. please nominate them below.</p>

<p>All nominations will be reviewed by Rails Core, and the final pick of Rails Luminaries will receive a trophy for their service, as well as a monetary award of $1,000.</p>

<p><a href="https://rails-foundation.neetoform.com/661b33f7b13a6189e7e2">Submit your 2026 Rails Luminary nomination  here</a>.</p>

<p><strong>Fine print:</strong></p>
<ul>
  <li>Nominations for 2026 will remain open until August 21.</li>
  <li>Companies/corporations are not eligible for nomination.</li>
  <li>Past award recipients cannot be nominated again (names listed on the form).</li>
  <li>Self-nominations are not allowed; individuals must be nominated by others.</li>
  <li>Nominator personal information will be kept confidential and will not be shared publicly or with the nominee without explicit consent.</li>
</ul>]]></content><author><name>Amanda Perino</name></author><category term="news" /><summary type="html"><![CDATA[Every year, Rails gets a little better. A little faster, a little safer, a little easier to work with. And none of that happens on its own.]]></summary></entry><entry><title type="html">New Rails reference app library published</title><link href="https://rubyonrails.org/2026/7/24/new-rails-reference-app-library" rel="alternate" type="text/html" title="New Rails reference app library published" /><published>2026-07-24T00:00:00+00:00</published><updated>2026-07-24T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/24/new-rails-reference-app-library</id><content type="html" xml:base="https://rubyonrails.org/2026/7/24/new-rails-reference-app-library"><![CDATA[<p>Today we’re adding a new page to the Ruby on Rails website: <strong><a href="/docs/reference-apps">Reference Apps</a></strong>. This is a small, hand-picked library of real, open-source Rails applications worth studying.</p>

<p>Documentation can only show you so much. Sometimes it’s better to just crack open the lid and go straight to the source to see how a real, production-quality Rails application is built. That’s harder to do well when there’s no curated starting point, so that’s what this library is meant to be.</p>

<p>Each entry links out to the full source so you can read the real thing: how the models are shaped, how a controller stays thin, how Turbo Streams actually get wired up, the full commit history, and all the small decisions made along the way.</p>

<p>This matters now, too, for a second audience: increasingly, people are looking for good examples to point their LLMs towards, so the code they produce is best set up for success.  A small set of clean, current, production-quality examples gives both humans and models something solid to learn from.</p>

<p><strong>So what’s in the library</strong></p>

<p>We’re launching with three open source apps:</p>

<ul>
  <li><strong>Campfire</strong> - a complete, real-time group chat app.</li>
  <li><strong>Writebook</strong> - a self-hosted platform for publishing books on the web.</li>
  <li><strong>Fizzy</strong> - a Kanban board reimagined.</li>
</ul>

<p><strong>Wait, they’re all from…</strong></p>

<p>Yes, so far they’re all apps built by 37signals. (That even <a href="https://github.com/rails/website/pull/684#issuecomment-5064970431">caught DHH by surprise</a>.)</p>

<p>These apps have often been pointed to as great examples to follow, and there’s no question that they follow Rails conventions to a T. Furthermore, seeing as we know they’re tried and tested, they were a great starting point for the library.</p>

<p>They’re now easier for you (and LLMs and anyone vibe-coding their way into the community for the first time) to find.</p>

<p>Big thank you to <a href="https://www.linkedin.com/in/robzolkos">Rob Zolkos</a> for designing and shipping this page for the Rails Foundation.</p>

<p><strong>What’s next</strong></p>

<p>This is a deliberately small library, and is <em>not</em> meant to be an exhaustive directory of open source Rails apps. We do plan to grow this library over time, but this will happen slowly and organically. We’ll announce when new applications are added.</p>

<p>You can find the library now on the <a href="/docs">Docs</a> page, or go straight to <a href="/docs/reference-apps">/docs/reference-apps</a></p>

<p><a href="/docs/reference-apps">Take a look</a> and let us know what you think!</p>

<p>Send us your feedback at <a href="mailto:foundation@rubyonrails.org">foundation@rubyonrails.org</a>.</p>

<p style="text-align: center;"><img src="/assets/images/reference-app-page.png" style="width: 55%;" /></p>]]></content><author><name>Amanda Perino</name></author><category term="news," /><category term="foundation" /><summary type="html"><![CDATA[Today we’re adding a new page to the Ruby on Rails website: Reference Apps. This is a small, hand-picked library of real, open-source Rails applications worth studying.]]></summary></entry><entry><title type="html">Happy Anniversary Rails!</title><link href="https://rubyonrails.org/2026/7/24/this-week-in-rails" rel="alternate" type="text/html" title="Happy Anniversary Rails!" /><published>2026-07-24T00:00:00+00:00</published><updated>2026-07-24T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/24/this-week-in-rails</id><content type="html" xml:base="https://rubyonrails.org/2026/7/24/this-week-in-rails"><![CDATA[<p>Happy Friday, this is <a href="https://greg.molnar.io">Greg</a>, bringing you the latest news from the Rails world.</p>

<p><a href="https://x.com/rails/status/2080580838530355432">A Rails anniversary!</a><br />
Today is the 22nd anniversary of the first public release of Ruby on Rails!</p>

<p><a href="https://rubyonrails.org/docs/reference-apps">Learn from real, open-source Rails apps</a><br />
On the Rails website, now you can find a small, hand-picked library of
exemplary open-source apps worth reading to see how production-quality Rails is
built today.</p>

<p><a href="https://github.com/rails/rails/pull/58165">Update the JavaScript in Rails guide</a><br />
The updated  JavaScript in Rails guide is ready for community review!</p>

<p><a href="https://github.com/rails/rails/pull/58213">Preserve sub-second precision when subtracting a <em>DateTime</em> from a <em>Time</em></a><br />
This pull request makes sure that sub-second precision is preserved when subtracting a <code class="language-plaintext highlighter-rouge">DateTime</code> from a <code class="language-plaintext highlighter-rouge">Time</code>.
<code class="language-plaintext highlighter-rouge">Time - DateTime</code> converted both sides via <code class="language-plaintext highlighter-rouge">to_f</code>, so microsecond-level
<code class="language-plaintext highlighter-rouge">DateTime</code> values lost precision. The difference is now computed from exact
rational timestamps, matching <code class="language-plaintext highlighter-rouge">Time.at(DateTime)</code> and
<code class="language-plaintext highlighter-rouge">ActiveSupport::TimeWithZone - DateTime</code>.</p>

<p><a href="https://github.com/rails/rails/pull/58191">Deprecate <em>RedisCacheStore::DEFAULT_REDIS_OPTIONS</em></a><br />
The <code class="language-plaintext highlighter-rouge">redis-client</code> implementation no longer reads this constant. Pass timeout
options to <code class="language-plaintext highlighter-rouge">RedisCacheStore</code> or a configured <code class="language-plaintext highlighter-rouge">RedisClient</code> instead.</p>

<p><a href="https://github.com/rails/rails/pull/58190">Deprecate <em>Cookies::HTTP_HEADER</em> constant</a><br />
You should migrate to <code class="language-plaintext highlighter-rouge">Rack::SET_COOKIE</code> from <code class="language-plaintext highlighter-rouge">Cookies::HTTP_HEADER</code> because it will be removed from future versions of Rails.</p>

<p><em>You can view the whole list of changes <a href="https://github.com/rails/rails/compare/@%7B2026-07-17%7D...main@%7B2026-07-24%7D">here</a>.</em><br />
<em>We had <a href="https://contributors.rubyonrails.org/contributors/in-time-window/20260717-20260724">22 contributors</a> to the Rails codebase this past week!</em></p>

<p>Until next time!</p>

<p><em><a href="https://world.hey.com/this.week.in.rails">Subscribe</a> to get these updates mailed to you.</em></p>]]></content><author><name>Greg</name></author><category term="news" /><summary type="html"><![CDATA[Happy Friday, this is Greg, bringing you the latest news from the Rails world.]]></summary></entry><entry><title type="html">What time is it? Rails time!</title><link href="https://rubyonrails.org/2026/7/17/this-week-in-rails" rel="alternate" type="text/html" title="What time is it? Rails time!" /><published>2026-07-17T00:00:00+00:00</published><updated>2026-07-17T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/17/this-week-in-rails</id><content type="html" xml:base="https://rubyonrails.org/2026/7/17/this-week-in-rails"><![CDATA[<p>Let’s explore this week’s major changes in the Rails codebase.</p>

<p><a href="https://github.com/rails/rails/pull/58085">Preserve sub-second precision when coercing a DateTime in Time.at</a><br />
Fix <code class="language-plaintext highlighter-rouge">Time.at</code> to always return the correct number of milliseconds for a <code class="language-plaintext highlighter-rouge">DateTime</code>.</p>

<p><a href="https://github.com/rails/rails/pull/58092">Accept Date and numeric inputs in relative_time_in_words</a><br />
Normalize the argument in the same way <code class="language-plaintext highlighter-rouge">distance_of_time_in_words</code> does, so every documented input type works.</p>

<p><a href="https://github.com/rails/rails/pull/58043">Respect a limit set on the relation in rails query</a><br />
An Active Record expression that carries a limit like <code class="language-plaintext highlighter-rouge">bin/rails query "Post.limit(5)"</code> had its limit silently replaced by the pagination window returning up to a full page instead of the requested 5 rows.</p>

<p><a href="https://github.com/rails/rails/pull/55410">Introduce ActionView::Helper::NavigationHelper</a><br />
Methods like <code class="language-plaintext highlighter-rouge">button_to</code> and <code class="language-plaintext highlighter-rouge">link_to</code> now belong to this model (together with their siblings <code class="language-plaintext highlighter-rouge">link_to_unless_current</code>, <code class="language-plaintext highlighter-rouge">link_to_unless</code>, and <code class="language-plaintext highlighter-rouge">link_to_if</code>).</p>

<p><a href="https://github.com/rails/rails/pull/58091">Honor if_not_exists: in SQLite3 add_check_constraint and add_foreign_key</a><br />
The SQLite3 adapter never declared <code class="language-plaintext highlighter-rouge">if_not_exists:</code> so it fell into the bucked of unused options and a duplicate was added.</p>

<p><a href="https://github.com/rails/rails/pull/58096">Read foreign key names from the schema on SQLite3</a><br />
Before the change, on SQLite3, <code class="language-plaintext highlighter-rouge">foreign_keys(table)</code> returned <code class="language-plaintext highlighter-rouge">nil</code> for every foreign key’s <code class="language-plaintext highlighter-rouge">name</code> because the constraint name was never read from the table definition.</p>

<p><a href="https://github.com/rails/rails/pull/58134">Support dumping schema_migrations in db/schema.rb</a><br />
Provide a new flag that lets <code class="language-plaintext highlighter-rouge">db/schema.rb</code> include a dump of <code class="language-plaintext highlighter-rouge">schema_migrations</code>. The output will look like this:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">ActiveRecord</span><span class="o">::</span><span class="no">Schema</span><span class="p">[</span><span class="mf">8.2</span><span class="p">].</span><span class="nf">define</span> <span class="k">do</span>
  <span class="o">...</span>
<span class="k">end</span>

<span class="no">ActiveRecord</span><span class="o">::</span><span class="no">Schema</span><span class="p">.</span><span class="nf">load_schema_migrations</span><span class="p">(</span><span class="kp">__FILE__</span><span class="p">)</span>
<span class="cp">__END__
20260716101900
20260716112003
20260716130752
...
</span></code></pre></div></div>

<p><a href="https://github.com/rails/rails/pull/58087">Fix MySQL POINT and MULTIPOINT columns misreported as integers</a><br />
ActiveRecord was misreporting MySQL <code class="language-plaintext highlighter-rouge">POINT</code> and <code class="language-plaintext highlighter-rouge">MULTIPOINT</code> columns as integer columns instead of treating them as an unknown type like the other spatial types.</p>

<p><a href="https://github.com/rails/rails/pull/58086">Convert Symbol keys in a transform_keys mapping</a><br />
Ensures that the <code class="language-plaintext highlighter-rouge">transform_keys</code> method in <code class="language-plaintext highlighter-rouge">HashWithIndifferentAccess</code> transforms a hash that maps old keys to new ones even with Symbol keys.</p>

<p><a href="https://github.com/rails/rails/pull/58119">Allow to access Controller#controller_path in a Ractor</a><br />
Also note that <a href="https://github.com/rails/rails/pull/58113">AbstractController::Base#action_methods</a> are now ractor safe.</p>

<p><a href="https://github.com/rails/rails/pull/58117">Raise for empty shards on connected_to_all_shards</a><br />
If an app isn’t sharded then <code class="language-plaintext highlighter-rouge">connected_to_all_shards</code> will now raise an error.</p>

<p><em>You can view the whole list of changes <a href="https://github.com/rails/rails/compare/@%7B2026-07-10%7D...main@%7B2026-07-17%7D">here</a>.</em><br />
<em>We had <a href="https://contributors.rubyonrails.org/contributors/in-time-window/20260710-20260717">24 contributors</a> to the Rails codebase this past week!</em></p>

<p>Until next time!</p>

<p><em><a href="https://world.hey.com/this.week.in.rails">Subscribe</a> to get these updates mailed to you.</em></p>]]></content><author><name>Claudio Baccigalupo</name></author><category term="news" /><summary type="html"><![CDATA[Let’s explore this week’s major changes in the Rails codebase.]]></summary></entry><entry><title type="html">Date.this_quarter? and more</title><link href="https://rubyonrails.org/2026/7/10/this-week-in-rails" rel="alternate" type="text/html" title="Date.this_quarter? and more" /><published>2026-07-10T00:00:00+00:00</published><updated>2026-07-10T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/10/this-week-in-rails</id><content type="html" xml:base="https://rubyonrails.org/2026/7/10/this-week-in-rails"><![CDATA[<p>Hi, <a href="https://x.com/morgoth85">Wojtek</a> here. Let’s explore this week’s changes in the Rails codebase.</p>

<p><a href="https://rubyonrails.org/2026/7/7/be-a-rails-world-mc">The Rails Foundation is inviting RUG organizers from around the world to apply to be a Rails World MC</a><br />
Ruby User Group organizers are a huge part of what makes the Ruby ecosystem special. They grow the community, create welcoming spaces, introduce speakers, keep events running smoothly, and make newcomers feel at home - all the things that make a great Rails World MC.</p>

<p><a href="https://github.com/rails/rails/pull/57963">Add this_quarter? to Date/Time</a><br />
It returns true if the date/time falls within the current quarter.</p>
<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">Date</span><span class="p">.</span><span class="nf">current</span> <span class="c1">#=&gt; Tue, 15 Feb 2000</span>
<span class="no">Date</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">31</span><span class="p">).</span><span class="nf">this_quarter?</span>  <span class="c1"># =&gt; true</span>
<span class="no">Date</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="mi">2000</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">1</span><span class="p">).</span><span class="nf">this_quarter?</span>   <span class="c1"># =&gt; false</span>
</code></pre></div></div>

<p><a href="https://github.com/rails/rails/pull/57742">Add ActiveJob::DeserializationError::RecordNotFound</a><br />
Raised when argument deserialization fails because a referenced record could not be found, and not for any other reason.</p>

<p><a href="https://github.com/rails/rails/pull/57825">Introduce ractorize!</a><br />
Added <em>Rails::Application#ractorize!</em> method which prepares the application to be shared and then calls <em>Ractor.make_shareable</em> on it.</p>

<p><a href="https://github.com/rails/rails/pull/58048">Fix ActionController::Live streams hanging on client disconnect</a><br />
<em>ActionController::Live::Buffer#abort</em> cleared the streaming queue but never enqueued the terminator that <em>each_chunk</em> uses to exit, so a reader thread blocked in <em>SizedQueue#pop</em> was never woken and the request thread hung indefinitely.</p>

<p><a href="https://github.com/rails/rails/pull/58039">Support endless and beginless ranges in number_field_tag / range_field_tag</a><br />
Fixes raising <em>RangeError</em> when endless or beginless ranges passed.</p>

<p><a href="https://github.com/rails/rails/pull/58023">Honor an explicit value: nil in color_field</a><br />
Previously, passing <em>value: nil</em> was ignored and the field still pre-filled from the model’s stored color.</p>

<p><a href="https://github.com/rails/rails/pull/57830">Deprecated the ActionController::Renderers::RENDERERS constant</a><br />
This constant was for internal usage but had a documentation and wasn’t set as private.
Applications that needs to add or remove renderers should be using the public API instead:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="no">ActionController</span><span class="p">.</span><span class="nf">add_renderer</span><span class="p">(</span><span class="ss">:rtf</span><span class="p">)</span> <span class="k">do</span>
<span class="k">end</span>
</code></pre></div></div>

<p><em>You can view the whole list of changes <a href="https://github.com/rails/rails/compare/@%7B2026-07-03%7D...main@%7B2026-07-10%7D">here</a>.</em><br />
<em>We had <a href="https://contributors.rubyonrails.org/contributors/in-time-window/20260703-20260710">26 contributors</a> to the Rails codebase this past week!</em></p>

<p>Until next time!</p>

<p><em><a href="https://world.hey.com/this.week.in.rails">Subscribe</a> to get these updates mailed to you.</em></p>]]></content><author><name>Wojtek</name></author><category term="news" /><summary type="html"><![CDATA[Hi, Wojtek here. Let’s explore this week’s changes in the Rails codebase.]]></summary></entry><entry><title type="html">Calling All RUG Organizers: Want to MC Rails World this year?</title><link href="https://rubyonrails.org/2026/7/7/be-a-rails-world-mc" rel="alternate" type="text/html" title="Calling All RUG Organizers: Want to MC Rails World this year?" /><published>2026-07-07T00:00:00+00:00</published><updated>2026-07-07T00:00:00+00:00</updated><id>https://rubyonrails.org/2026/7/7/be-a-rails-world-mc</id><content type="html" xml:base="https://rubyonrails.org/2026/7/7/be-a-rails-world-mc"><![CDATA[<p>The Rails Foundation is looking for two people to be MCs at <a href="/world/2026">Rails World</a> this year, and we think that some of the best candidates are already doing the job every month in Ruby communities around the world…</p>

<p><a href="https://www.ruby-lang.org/en/community/user-groups/">Ruby User Groups (RUGs)</a> are where people find their first Ruby friends, give their first talks, discover their next role, and become part of the community, and <strong>RUG organizers</strong> are a huge part of what makes the Ruby ecosystem special. They create welcoming spaces, introduce speakers, keep events running smoothly, and make newcomers feel at home — all the things that make a great Rails World MC too.</p>

<p>That’s why, this year, we’re inviting RUG organizers from around the world to apply to be a Rails World MC. If you’re comfortable in front of a crowd, enjoy bringing people together, and love the Ruby community, we’d love to hear from you.</p>

<p>As a Rails World MC, you’ll help guide attendees through the conference by:</p>
<ul>
  <li>Opening and closing sessions.</li>
  <li>Introducing speakers.</li>
  <li>Keeping attendees informed throughout the day.</li>
  <li>Maintaining the pace and energy of the event.</li>
  <li>Being one of the welcoming faces of Rails World.</li>
</ul>

<p>We’re looking for people who:</p>
<ul>
  <li>Have organized a Ruby User Group anywhere in the world for at least one year.</li>
  <li>Love the Ruby and Rails community.</li>
  <li>Are warm, welcoming, and comfortable speaking to a crowd.</li>
  <li>Can keep the energy up while making speakers and attendees feel at home - for 2 full days.</li>
  <li>Are available to join us in Austin from September 22–25.</li>
</ul>

<p>We’ll cover your hotel stay in Austin, and you’ll work closely with the Rails World production team to make sure you’re fully prepared before stepping onto the stage. You should also be a few preparation sessions in the weeks leading up to the event.</p>

<p><strong>Interested?</strong></p>

<p>If you’re a RUG organizer and this sounds like something you’d enjoy, we’d love to hear from you.</p>

<p><a href="https://docs.google.com/forms/d/e/1FAIpQLScy-fF1XJGGiuLLaePGpgpO7bpoJsrly95o0IXI4pN64UH4iw/viewform?usp=publish-editor">Fill out this form</a> by July 19 and tell us a little about yourself, your Ruby User Group, and why you’d like to MC Rails World. Feel free to include links to any talks, meetup recordings, or event introductions you’ve done, but don’t worry if you don’t have any. We’re just as interested in your enthusiasm, your presence, and your love for the community.</p>

<p>We’ll be reviewing submissions over the coming weeks, and will let everyone know as soon as possible. We can’t wait to hear from you!</p>

<p>Questions? world@rubyonrails.org</p>]]></content><author><name>Rails Foundation</name></author><category term="news," /><category term="foundation" /><summary type="html"><![CDATA[The Rails Foundation is looking for two people to be MCs at Rails World this year, and we think that some of the best candidates are already doing the job every month in Ruby communities around the world…]]></summary></entry></feed>