#164 🌿 New Rails internals: HTML-aware views, immutable Ractors, and the QUERY method

Happy Wednesday!

Here is issue #164 of our newsletter, bringing you news and the best tools for your current or future Rails projects…

1. 🌿 Are your Rails views hiding broken markup? Juan walks through the HTML-aware ERB engine Rails just merged into actionview by pointing its CLI at FastRuby.io's own views, accumulating since 2017. The run found real problems in twenty-one templates, the kind of issues that quietly accumulate in long-lived views. Read the full breakdown to plan your own audit before Herb becomes a Rails default.

2. 🔍 Rails 8.2 ships the QUERY method, but the stack isn't ready for it yet. Henrique explores what the new QUERY method supports in Rails 8.2, and what's still missing. It's a request that's safe like a read but carries its search in the body, keeping large or sensitive filters out of your logs. Rails ships a query route helper, a request.safe_method? check, and a test helper, but the current Puma release rejects a QUERY request until you add one line of config. See what works today before you reach for it.

3. 🚀 Does cranking reasoning to "max" actually make an AI agent better? Svyatoslav Kryukov, Artur Petrov, and Alexander Baygeldin reran every model in the Agents on Rails benchmark on the same 20 Fizzy tickets with reasoning turned all the way up, and found "max" means very different things per provider: Fable 5.1 cost $1,146 and solved exactly as many runs as it did at default, while Gemini 3.8 Flash actually went backward. They also caught DeepSeek 4.1 Flash using its API key to search GitHub for the answers, the benchmark's first deliberate breach. See which models paid off and which just burned time and money.

4. 🤖 Want AI agents to fetch clean Markdown, without a front-matter field on every page? Daniel Doubrovkine extracted his one-off script into jekyll-md, a proper Jekyll plugin that converts each page's rendered HTML to Markdown and injects the discovery <link> tag automatically, no per-page front matter needed. See why he kept llms.txt generation out of it and hand-wrote a curated file instead.

5. 🔢 Tokens and tokenization in Ruby: making the numbers behind your text visible. Lucian Ghinda uses the tiktoken_ruby gem to encode two Rails class definitions one word apart into 5-element token ID arrays that differ in a single position, then, with nothing but array subtraction, decodes the difference back to " Author" or " Session". See how the same text returns entirely different IDs once you switch from gpt-4o to gpt-3.5-turbo.

6. 🧊 Ractors can't share mutable state, so Rails had to rethink memoization. Because Ractors forbid shared mutable state, Hartley McGuire shows how the Rails team is replacing memoization and mutable APIs with immutability patterns: deep-freezing objects, computing values eagerly or on freeze, deprecating public mutable constants like Rack::MethodOverride's, and dispatching lazy values to the main Ractor. It adds up to real architectural work, not just removing memoization. Grab the pattern that fits your own frozen-object headaches.

7. 🚨 Is your AI coding tool shipping your whole Git history to the cloud? J. F. Zhang caught ZCode, Zhipu's AI coding app, silently packaging your workspace and full .git history, then attempting encrypted uploads to Aliyun OSS that the UI toggles don't stop, using a key only the vendor's server can unwrap. When ZCode later open-sourced its code, its checkpoint feature turned out to run purely on local git diffs, undercutting the very justification given for the uploads. Read the evidence chain and grab the one-line filesystem lock that shuts it down.

Check out our other articles on: ​​​​Ruby | Rails | Compatibility | ​​Upgrades​​​​ | ​​​​Tech Debt​​​ | AI​

Bookmark, share, or save them for later. We hope these links are helpful. 😉

Best,

The ​​​​​​FastRuby.io​​​​​​ Team

Do you know anyone who would love to receive this newsletter? Tell them to subscribe👇 and catch the latest issue right in their inbox.

Don't wait to bring your Rails application up to date.

We will get on a quick call and recommend a couple of options to start upgrading your Rails app.