<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Ruby Weekly</title>
    <description>A free, once–weekly e-mail round-up of Ruby news and articles.</description>
    <link>https://rubyweekly.com/</link>
    <item>
      <title>Bringing Rails into the Ractor age</title>
      <link>https://rubyweekly.com/issues/814</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​814 — August 27, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189569/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🗓️ In case you were wondering where we were last week, we took a brief summer vacation. Luckily, it's been a &lt;em&gt;busy&lt;/em&gt; couple of weeks in the Ruby world!&lt;br&gt;__&lt;br&gt;&lt;em&gt;Your editor, Peter Cooper&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/189516/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/a79m4whaihamxdtztxtx.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189516/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Bringing Rails Into the Ractor-Age&lt;/a&gt;&lt;/span&gt; — &lt;em&gt;"Ractors are now viable in production, and Ruby 4.1 will make them even better,"&lt;/em&gt; says Edouard, who looks at what Ractors can unlock for Rails apps (nearly 7x memory savings vs Puma on a real-world app) and the steps being taken to get it all working in the near future.&lt;/p&gt;
  &lt;p&gt;Edouard Chin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;😎 Over on Reddit, &lt;a href="https://rubyweekly.com/link/189517/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Charles Oliver Nutter noted&lt;/a&gt; &lt;em&gt;"Of course you can do fully parallel shared memory concurrency in Rails today just by running on JRuby."&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/189515/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/43b86015.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189515/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;One Ruby Gem Replaced Their Entire Monitoring Stack&lt;/a&gt;&lt;/span&gt; — Now it's one gem. AppSignal tracks errors, N+1 queries, slow SQL, Sidekiq jobs, and host metrics for Rails — every feature on every plan, no add-on tiers. Real engineers answer support, not a ticket queue. &lt;a href="https://rubyweekly.com/link/189515/rss" style=" color: #0055bb;   "&gt;30-day free trial, no credit card&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189518/rss" title="www.elttam.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;A Ruby 4.0 Universal RCE Deserialization Gadget Chain&lt;/a&gt;&lt;/span&gt; — A new universal chain (found by &lt;a href="https://rubyweekly.com/link/189519/rss" style=" color: #0055bb;   "&gt;elttam&lt;/a&gt;, a security research firm) that turns one &lt;code&gt;Marshal.load&lt;/code&gt; call into an RCE on Ruby 4.0.6. Some fun technical details here, and a strong reminder to avoid using &lt;code&gt;Marshal.load&lt;/code&gt; on untrusted input.&lt;/p&gt;
  &lt;p&gt;Luke Jahnke &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;You need to upgrade the &lt;code&gt;resolv&lt;/code&gt; gem&lt;/strong&gt; as &lt;a href="https://rubyweekly.com/link/189520/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;two vulnerabilities have just been discovered&lt;/a&gt; – though only if you call &lt;code&gt;Resolv&lt;/code&gt; directly or load &lt;code&gt;resolv-replace&lt;/code&gt;; the OS resolver behind &lt;code&gt;Net::HTTP&lt;/code&gt; isn't affected.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189521/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.19&lt;/a&gt; now conclude &lt;code&gt;install&lt;/code&gt;, &lt;code&gt;update&lt;/code&gt;, and &lt;code&gt;lock&lt;/code&gt; with a summary of which versions cooldown held back.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 &lt;a href="https://rubyweekly.com/link/189522/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Talks from May's &lt;em&gt;Balkan Ruby 2026&lt;/em&gt;&lt;/a&gt; event are now on YouTube. If forced to pick just one, Jean Boussier's &lt;a href="https://rubyweekly.com/link/189523/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;▶️ "Multiprocessing is the most efficient way to serve Rails apps"&lt;/a&gt; is particularly informative.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rails has &lt;a href="https://rubyweekly.com/link/189524/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;merged support for the HTTP &lt;code&gt;QUERY&lt;/code&gt; method&lt;/a&gt;. Idempotent like &lt;code&gt;GET&lt;/code&gt;, but the query goes in the body.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sam Ruby's latest &lt;em&gt;"get real apps running on &lt;a href="https://rubyweekly.com/link/189525/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt;"&lt;/em&gt; efforts have &lt;a href="https://rubyweekly.com/link/189526/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;progressed to 37signals' Campfire&lt;/a&gt; chat app.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189527/rss" title="zverok.space" style=" color: #0055bb;    font-size: 1.05em;"&gt;Thinking About Tests: Assertions and Matchers&lt;/a&gt;&lt;/span&gt; — Starting from first principles, a look down to the level of single assertions, what a 'matcher' is, and why lucid, composable tests matter now more than ever.&lt;/p&gt;
  &lt;p&gt;Victor Shepelev &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189528/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Adopts Herb as an Alternative ERB Implementation&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/189529/rss" style=" color: #0055bb;   "&gt;Herb&lt;/a&gt; parses HTML and ERB into one syntax tree, so it understands your markup at compile time and can catch invalid Ruby or HTML output. Now merged into Action View as an Erubi alternative, though it's opt-in for now.&lt;/p&gt;
  &lt;p&gt;Marco Roth et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/189530/rss" title="rubyonrails.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Agents on Rails: The First Benchmark Report&lt;/a&gt;&lt;/span&gt; — The Rails Foundation ran a benchmark of various AI models across 21 tasks on the &lt;a href="https://rubyweekly.com/link/189531/rss" style=" color: #0055bb;   "&gt;Writebook&lt;/a&gt; app (fixing bugs, working on security issues, etc.) Find out which models 'know' Rails best.&lt;/p&gt;
  &lt;p&gt;The Rails Foundation &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 In a follow up, &lt;a href="https://rubyweekly.com/link/189532/rss" style=" color: #0055bb; font-weight: 600;   "&gt;the team shares &lt;code&gt;lemans&lt;/code&gt;&lt;/a&gt;, the Ruby-powered harness used in the evals above. It's &lt;a href="https://rubyweekly.com/link/189533/rss" style=" color: #0055bb; font-weight: 600;   "&gt;open source&lt;/a&gt; so you can now use it too.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189534/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 7.2 Hit EOL Aug 9. Ready for Your SOC 2 Audit?&lt;/a&gt;&lt;/span&gt; — We map Rails, Ruby, and runtime EOL across your stack and hand your auditors evidence, not assurances.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Infrastructure Assessment &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189535/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;From Slow Tests to Slow Production: Debugging with Stackprof&lt;/a&gt; – Going from a curiously slow Rails test to the one-line root cause. &lt;cite&gt;Jeremy Stuckey&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189536/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;A Fresh Look at Hanami&lt;/a&gt; – Love Ruby, but looking to expand beyond Rails? Some notes on doing just that. &lt;cite&gt;Aaron Sumner&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189537/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;What Replacing React with Hotwire Really Costs&lt;/a&gt; &lt;cite&gt;Henrique Medeiros&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/189538/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/rt8q95dym0he0hefzhm9.jpg" width="640" style="        line-height: 100%;  "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189538/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;sghtmltopdf: HTML to PDF Without a Browser Engine&lt;/a&gt;&lt;/span&gt; — Billing itself as &lt;em&gt;"the second generation of wkhtmltopdf and wicked_pdf"&lt;/em&gt;, this is an HTML-to-PDF renderer that &lt;em&gt;doesn't&lt;/em&gt; depend on a browser process. Built for invoices and reports, not arbitrary pages, and it'll repeat table headers across page breaks.&lt;/p&gt;
  &lt;p&gt;yo_waka &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189539/rss" title="blog.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Blog Post: Your Vibe-Coded Monitoring Tool Now Needs Its Own Monitoring&lt;/a&gt;&lt;/span&gt; — 45% of AI-generated code ships an OWASP Top 10 bug. So who monitors the monitor?&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189540/rss" title="jpcamara.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;A Guide to Using Batches in Solid Queue 1.7&lt;/a&gt;&lt;/span&gt; — Batches have been an often-requested feature in &lt;a href="https://rubyweekly.com/link/189541/rss" style=" color: #0055bb;   "&gt;Rails' default queue system&lt;/a&gt; and have finally landed. Its implementer explains here how batches behave, including callbacks, nesting, and patterns worth using.&lt;/p&gt;
  &lt;p&gt;JP Camara &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189542/rss" title="yaroslav.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Kino 0.4: A High-Perf Ractor Web Server for Ruby 4.0+&lt;/a&gt;&lt;/span&gt; — A Ractor-based web server that uses every core in one process instead of forking. &lt;a href="https://rubyweekly.com/link/189543/rss" style=" color: #0055bb;   "&gt;This week's release&lt;/a&gt; adds a Rack handler, so &lt;code&gt;rails server -u kino&lt;/code&gt; boots (though Rails isn't Ractor-shareable yet, so it runs in a fallback mode).&lt;/p&gt;
  &lt;p&gt;Yaroslav Markin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189544/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RuboCop 1.90.0&lt;/a&gt; – The code analyzer/formatter adds a long-awaited &lt;code&gt;disable-next&lt;/code&gt; directive, a &lt;code&gt;--display-suppressed&lt;/code&gt; option that reveals what your directive comments are hiding, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189545/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RBS 4.2&lt;/a&gt; – Ruby's type signature language now supports non-ASCII characters in identifiers and drops Ruby 3.2 support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189546/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ActiveRecord-Import 2.3&lt;/a&gt; – Library for efficient bulk insertion of data using Active Record.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189547/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ValidEmail2 7.1&lt;/a&gt; – Validates email addresses and the domains they use.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189548/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ferrum 0.18.0&lt;/a&gt; – High-level API for controlling Chrome from Ruby.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189549/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Comma 5.0&lt;/a&gt; – DSL-based CSV generator for Ruby objects.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189550/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rubyzip 3.5&lt;/a&gt; – Library for reading and writing ZIP files.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;💎 Shipping Ruby code with AI agents? &lt;a href="https://rubyweekly.com/link/189551/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Undercover CI&lt;/a&gt; catches untested methods in your PRs before you merge. Coverage percentages won't.&lt;/p&gt;
 
&lt;p&gt;🚢 Shipped a fix? Ask Claude or Cursor what &lt;a href="https://rubyweekly.com/link/189552/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;AppSignal&lt;/a&gt; sees in the latest deploy — error rates, latency, traces, without leaving your editor.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🗓  Upcoming Ruby Events&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🇺🇸 &lt;a href="https://rubyweekly.com/link/189553/rss" style=" color: #0055bb; font-weight: 600;"&gt;Rails Camp West (Sep 7-11 in Oregon)&lt;/a&gt; — A four night retreat/unconference in the wilderness.&lt;/li&gt;
&lt;li&gt;🇨🇿 &lt;a href="https://rubyweekly.com/link/189554/rss" style=" color: #0055bb; font-weight: 600;"&gt;EuRuKo 2026 (Sep 17-18 in Brno, Czechia)&lt;/a&gt; — Europe's longest-running Ruby conference. Matz and Koichi Sasada to keynote!&lt;/li&gt;
&lt;li&gt;🇺🇸 &lt;a href="https://rubyweekly.com/link/189555/rss" style=" color: #0055bb; font-weight: 600;"&gt;Rails World 2026 (Sep 23-24 in Austin, TX)&lt;/a&gt; — The Rails Foundation's flagship event. &lt;a href="https://rubyweekly.com/link/189556/rss" style=" color: #0055bb; font-weight: 600;"&gt;Here's the speaker lineup.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🇺🇸 &lt;a href="https://rubyweekly.com/link/189557/rss" style=" color: #0055bb; font-weight: 600;"&gt;Rocky Mountain Ruby 2026 (Sep 28-29 in Boulder, CO)&lt;/a&gt; — A well-regarded regional US Ruby conference.&lt;/li&gt;
&lt;li&gt;🇫🇮 &lt;a href="https://rubyweekly.com/link/189558/rss" style=" color: #0055bb; font-weight: 600;"&gt;Tiny Ruby Conf (Oct 1 in Helsinki)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🇨🇦 &lt;a href="https://rubyweekly.com/link/189559/rss" style=" color: #0055bb; font-weight: 600;"&gt;XO Ruby (Oct 3 in Toronto)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🇯🇵 &lt;a href="https://rubyweekly.com/link/189560/rss" style=" color: #0055bb; font-weight: 600;"&gt;Kaigi on Rails 2026 (Oct 16-17 in Tokyo / Online)&lt;/a&gt; — Rails-focused conference with DHH keynoting.&lt;/li&gt;
&lt;li&gt;🇺🇸 &lt;a href="https://rubyweekly.com/link/189561/rss" style=" color: #0055bb; font-weight: 600;"&gt;SF Ruby Startup Conference 2026 (Nov 10-12 in San Francisco)&lt;/a&gt; — The &lt;em&gt;Evil Martians&lt;/em&gt; have &lt;a href="https://rubyweekly.com/link/189562/rss" style=" color: #0055bb; font-weight: 600;"&gt;written a post about why you should go&lt;/a&gt;.&lt;/li&gt;

&lt;/ul&gt;
&lt;p&gt;ℹ️ Note: &lt;em&gt;This list is not exhaustive, but we'll continue to mention and promote various events here from time to time.&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/814/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/814</guid>
    </item>
    <item>
      <title>A new attempt to fork Rails</title>
      <link>https://rubyweekly.com/issues/813</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​813 — August 13, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189243/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;🗓️ &lt;strong&gt;A scheduling note&lt;/strong&gt;: We're taking a summer break next week, so we'll be back on August 27. Catch you then!&lt;br&gt;__&lt;br&gt;&lt;em&gt;Your editor, Peter Cooper&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/189244/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/h7ecy6ngejzuwpte80ud.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189244/rss" title="www.ruby2d.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Ruby 2D 1.0: SDL3, WebAssembly, and a Comeback Story&lt;/a&gt;&lt;/span&gt; — After three years dormant, Tom Black's &lt;em&gt;"&lt;code&gt;Square.new&lt;/code&gt;-and-it-appears"&lt;/em&gt; graphics gem gets a rewrite with SDL3-powered GPU rendering and the ability to compile experiences to WebAssembly (&lt;a href="https://rubyweekly.com/link/189194/rss" style=" color: #0055bb;   "&gt;live examples&lt;/a&gt;). &lt;a href="https://rubyweekly.com/link/189195/rss" style=" color: #0055bb;   "&gt;Learn how to use its DSL here&lt;/a&gt; or read &lt;a href="https://rubyweekly.com/link/189196/rss" style=" color: #0055bb;   "&gt;Tom's story of resurrecting the project&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tom Black &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;😅 I tested it out by making a little &lt;em&gt;Mario Paint&lt;/em&gt;-inspired paint app &lt;em&gt;(above)&lt;/em&gt; and I learnt I can't draw the Ruby logo at all!&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/189192/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/820c7ad6.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189192/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 We Audited 137 Rails Apps. 98% Had a Critical KEV&lt;/a&gt;&lt;/span&gt; — Rails 7.2 went EOL this week, so it's a good time to look at what’s running in production. We map your images, runtimes, and K8s workloads against CISA's KEV catalog and write the verdicts up as VEX.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Infrastructure Assessments &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189197/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;&lt;code&gt;json&lt;/code&gt; 3.0.0 RC1 Released for Testing&lt;/a&gt;&lt;/span&gt; — A big, intentionally breaking release of Ruby's default JSON gem that &lt;a href="https://rubyweekly.com/link/189198/rss" style=" color: #0055bb;   "&gt;Jean wants you to test&lt;/a&gt; before its release next month. &lt;code&gt;create_additions&lt;/code&gt; is gone, so &lt;code&gt;JSON.load&lt;/code&gt; and &lt;code&gt;JSON.dump&lt;/code&gt; are safe by default, but beware that unknown options now &lt;em&gt;raise&lt;/em&gt; instead of being ignored.&lt;/p&gt;
  &lt;p&gt;Jean Boussier &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 Jean has also &lt;em&gt;just&lt;/em&gt; dropped &lt;a href="https://rubyweekly.com/link/189245/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Speeding Up (small) Ruby Hashes&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;👀 &lt;a href="https://rubyweekly.com/link/189199/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Lucas Dohmen has announced &lt;em&gt;Amiko&lt;/em&gt;&lt;/a&gt;, a community-run fork of Rails 8, arguing Rails' core has changed little since 6.0 and that DHH's view of the world is incompatible with his own. &lt;a href="https://rubyweekly.com/link/189200/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ryan Bigg is unconvinced&lt;/a&gt; by the idea and thinks &lt;a href="https://rubyweekly.com/link/189201/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Hanami&lt;/a&gt; is the way forward.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matz has proposed &lt;a href="https://rubyweekly.com/link/189203/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;letting &lt;code&gt;String#tr&lt;/code&gt; accept character replacement options in a hash style&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As of August 9, Rails 7.2 no longer (officially) gets security support, and Rails 8.0 reaches a similar end on November 7. &lt;a href="https://rubyweekly.com/link/189202/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;More details here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇨🇿 &lt;a href="https://rubyweekly.com/link/189204/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Euruko 2026&lt;/a&gt; is taking place next month (September 17-18) in Brno, Czechia, with &lt;a href="https://rubyweekly.com/link/189205/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;speakers&lt;/a&gt; including Matz, Koichi Sasada, Hitoshi Hasumi (the creator of &lt;a href="https://rubyweekly.com/link/189206/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;PicoRuby&lt;/a&gt;), Charles Oliver Nutter, and Benoît Daloze.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 Matz is keeping busy next month as he's also &lt;a href="https://rubyweekly.com/link/189207/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;going to be at &lt;em&gt;Rails World 2026&lt;/em&gt;&lt;/a&gt; doing a fireside chat with DHH. &lt;a href="https://rubyweekly.com/link/189208/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The event's full agenda&lt;/a&gt; is now up too.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🔒&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/189209/rss" title="guides.rubygems.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;A Guide to Security for Gem Authors and Users&lt;/a&gt;&lt;/span&gt; — RubyGems' guide to protecting your account, hardening your gems, and reporting vulnerabilities has been updated for 2026 to cover MFA, Trusted Publishing, lockfile checksums, and &lt;a href="https://rubyweekly.com/link/189210/rss" style=" color: #0055bb;   "&gt;cooldowns&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;RubyGems Guides &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189211/rss" title="mensfeld.pl" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ruby and Rails Performance Roundup: The Backlog Edition&lt;/a&gt;&lt;/span&gt; — A followup to Maciej's recent &lt;a href="https://rubyweekly.com/link/189212/rss" style=" color: #0055bb;   "&gt;look at PRs which sped up Ruby&lt;/a&gt;, this time tackling 40 more Ruby &lt;em&gt;and&lt;/em&gt; Rails perf-related PRs, complete with the numbers.&lt;/p&gt;
  &lt;p&gt;Maciej Mensfeld &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189213/rss" title="blog.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Blog Post: Now Watching Your Cron and Sidekiq Jobs: AppSignal Launch Week Recap&lt;/a&gt;&lt;/span&gt; — Process monitoring for Sidekiq &amp;amp; cron, hosted MCP, a new CLI, sharper log queries, and dark mode.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189214/rss" title="evilmartians.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Fair by Design: Orchestrating Background Jobs in Ruby&lt;/a&gt;&lt;/span&gt; — What to do when one tenant's giant job batch starves everyone else's queue. Compares four strategies and why no Ruby job processor handles it out of the box.&lt;/p&gt;
  &lt;p&gt;Alexander Baygeldin (Evil Martians) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/189215/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;One Week of Building and Reviewing Code with LLM Agents&lt;/a&gt; – Hard numbers from a week of agent-driven Rails work showing that diversity of checks and tests beats throwing more agents at a problem. &lt;cite&gt;Lucian Ghinda&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189216/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Use Playwright in Ruby for Scraping and Testing&lt;/a&gt;  &lt;cite&gt;Jakub Zielinski (ScrapingBee)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189217/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;What Active Record Transactions Actually Protect&lt;/a&gt;  &lt;cite&gt;Syed Aslam&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189218/rss" title="dragonruby.itch.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;DragonRuby Releases a 'Free to All' &lt;em&gt;Jam&lt;/em&gt; License&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/189219/rss" style=" color: #0055bb;   "&gt;DragonRuby&lt;/a&gt; is a Ruby-powered 2D engine built on mruby and SDL. It's a commercial product, but there's now a free option for building games to distribute on the Web (even commercially). Desktop, Steam and mobile use remain paid.&lt;/p&gt;
  &lt;p&gt;DragonRuby Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189220/rss" title="solidobjects.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;Solid Objects: Cloudflare &lt;em&gt;Durable Objects&lt;/em&gt; for Rails&lt;/a&gt;&lt;/span&gt; — Durable, addressable actors (a la Cloudflare's &lt;a href="https://rubyweekly.com/link/189221/rss" style=" color: #0055bb;   "&gt;Durable Objects&lt;/a&gt;) for Rails backed by your existing database, with a reactive ERB helper that live-updates every browser without writing channels, Stimulus or JavaScript.&lt;/p&gt;
  &lt;p&gt;Lucas Carlson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189222/rss" title="sinaptia.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;AI Shouldn't Cost More Than It Saves&lt;/a&gt;&lt;/span&gt; — We can find where LLMs pay off, validate with real data, and tune for cost/effectiveness. Need help? &lt;a href="https://rubyweekly.com/link/189223/rss" style=" color: #0055bb;   "&gt;Let's talk&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;SINAPTIA &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189224/rss" title="paolino.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;&lt;code&gt;RubyLLM::Schema&lt;/code&gt; is Now &lt;em&gt;Schematist&lt;/em&gt;: A JSON Schema DSL for Ruby&lt;/a&gt;&lt;/span&gt; — A general purpose &lt;a href="https://rubyweekly.com/link/189225/rss" style=" color: #0055bb;   "&gt;JSON Schema&lt;/a&gt; DSL, spun out of &lt;a href="https://rubyweekly.com/link/189226/rss" style=" color: #0055bb;   "&gt;RubyLLM&lt;/a&gt; and now covering the full &lt;a href="https://rubyweekly.com/link/189227/rss" style=" color: #0055bb;   "&gt;Draft 2020-12&lt;/a&gt; vocabulary. Values can be procs resolved at render time, and &lt;code&gt;to_json_schema&lt;/code&gt; finally returns a real schema document.&lt;/p&gt;
  &lt;p&gt;Carmine Paolino &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189228/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Dentaku 4.0: Math and Logic Formula Parser and Evaluator&lt;/a&gt;&lt;/span&gt; — Allows run-time binding of values to variables referenced in user supplied formulas. Intended to safely evaluate untrusted expressions.&lt;/p&gt;
  &lt;p&gt;Solomon White &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189229/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Haml 7.3&lt;/a&gt; – The templating engine that simplifies writing HTML by using indentation and elegant syntax now replaces Ripper with Prism.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189230/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Reline 0.7&lt;/a&gt; – Official pure-Ruby library with the same API as &lt;code&gt;readline&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189231/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Delayed 4.0&lt;/a&gt; – Multi-threaded, SQL-driven Active Job backend.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;✉️ &lt;a href="https://rubyweekly.com/link/189232/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ahoy Email 4.0&lt;/a&gt; – First-party email analytics for Rails apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189233/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Brakeman 8.0.6&lt;/a&gt; – Vulnerability scanner for Rails apps.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;Analytics on your Rails data without a second database? &lt;a href="https://rubyweekly.com/link/189234/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TimescaleDB&lt;/a&gt; extends the Postgres you run.&lt;/p&gt;
 
&lt;p&gt;💎 Is your Rails app fine? Probably. &lt;a href="https://rubyweekly.com/link/189235/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;AppSignal&lt;/a&gt; tells you for sure — errors, N+1s, Sidekiq jobs, host metrics, one gem.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;We'll be back in two weeks on August 27 – see you then! Unless you're a &lt;a href="https://rubyweekly.com/link/189236/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Go Weekly&lt;/a&gt; or &lt;a href="https://rubyweekly.com/link/189237/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;React Status&lt;/a&gt; subscriber too, then we'll see you tomorrow ;-)&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/813/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/813</guid>
    </item>
    <item>
      <title>RuboCop goes project-wide with Rubydex</title>
      <link>https://rubyweekly.com/issues/812</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​812 — August 6, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188986/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/188936/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fzbyxtin7bcqqytkykwv.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188936/rss" title="byroot.github.io" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Shrinking Ruby Hashes&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;Hash&lt;/code&gt; uses 2-4x the memory of a &lt;code&gt;Struct&lt;/code&gt; holding the same data. Ruby committer Jean Boussier digs into why, looking at the layout changes from Ruby 2.3 to now, and shows off the patches that could shrink small hashes in Ruby 4.1.&lt;/p&gt;
  &lt;p&gt;Jean Boussier &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/188935/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/bd3f038a.png" width="130" height="130" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188935/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Make Your Next Rails Crash Make Sense&lt;/a&gt;&lt;/span&gt; — Errors, N+1 queries, slow SQL, Sidekiq jobs, and host metrics in one Ruby gem. Every feature on every plan, predictable pricing, and real engineers on support. &lt;a href="https://rubyweekly.com/link/188935/rss" style=" color: #0055bb;   "&gt;30-day free trial, no credit card, two-minute install&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;▶  &lt;a href="https://rubyweekly.com/link/188937/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Tenderlove on Ractors, JIT Compilers, and Installing Gems Faster&lt;/a&gt;&lt;/span&gt; — If you're an Aaron Patterson fan, there's much to enjoy in this 80-minute chat, covering his pre-Ruby background, Ractors, opinions on databases, making gems faster to install, and why he still can't trust AI code like a teammate's.&lt;/p&gt;
  &lt;p&gt;Robby Russell and Aaron Patterson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Hiroshi Shibata discovered that &lt;a href="https://rubyweekly.com/link/188938/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;lazy loading Ruby's error extension gems speeds up boot time&lt;/a&gt;. Matz accepted the proposal, saying: &lt;em&gt;"A 3.8x boot time improvement with no regression on the error path is a clear win."&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188939/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;mise&lt;/a&gt;, a popular dev tool installer/manager I'm somewhat in love with, has &lt;a href="https://rubyweekly.com/link/188940/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a new release out&lt;/a&gt; that makes precompiled Ruby binaries the default.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you thought the Ruby Central dispute wound down after Bundler and RubyGems were passed to Ruby core's stewardship last year, André Arko says otherwise in &lt;a href="https://rubyweekly.com/link/188941/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;his latest account of where things stand&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jean Boussier proposes letting &lt;a href="https://rubyweekly.com/link/188942/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;CGI.escapeHTML&lt;/code&gt; accept a custom escape table&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188943/rss" title="blog.rubygems.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Making RubyGems Guides Friendly to Humans and AI&lt;/a&gt;&lt;/span&gt; — Append &lt;code&gt;.md&lt;/code&gt; to &lt;a href="https://rubyweekly.com/link/188944/rss" style=" color: #0055bb;   "&gt;any of the guides'&lt;/a&gt; URLs for raw Markdown, or point an agent at &lt;a href="https://rubyweekly.com/link/188945/rss" style=" color: #0055bb;   "&gt;llms.txt&lt;/a&gt; for an index of them all. The guides have had a broader overhaul too, with a new Concepts section and Cmd+K search.&lt;/p&gt;
  &lt;p&gt;Hiroshi Shibata &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188946/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails 7.2 Security Support Ends Aug 9. Need to Upgrade Fast?&lt;/a&gt;&lt;/span&gt; — “&lt;a href="https://rubyweekly.com/link/188946/rss" style=" color: #0055bb;   "&gt;FastRuby.io&lt;/a&gt; successfully upgraded our application to Rails 8.1 and Ruby 3.4 on time and on budget.”&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Rails Upgrade Services &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/188947/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tell the Agent to Write Its Scripts in Ruby&lt;/a&gt; – Scripts have always been a sweet spot for Ruby, so why not have your agents use it, too? &lt;cite&gt;Lucian Ghinda&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188948/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Running Code When the Rails Web Server Boots&lt;/a&gt; – That is, only under Puma, say, and not in &lt;code&gt;rake&lt;/code&gt; tasks or the console. &lt;cite&gt;Ben Sheldon&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188949/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Install Any Ruby Version in Seconds Using &lt;code&gt;rv&lt;/code&gt;&lt;/a&gt;  &lt;cite&gt;Javier Cervantes&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188950/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Running a Ruby MCP Server in Production&lt;/a&gt;  &lt;cite&gt;Amanda Bizzinotto&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188951/rss" title="metaredux.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rubydex-Powered Project-Wide Analysis with RuboCop 1.89&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/188952/rss" style=" color: #0055bb;   "&gt;RuboCop&lt;/a&gt; has traditionally analyzed one file at a time, but its expanded, opt-in &lt;a href="https://rubyweekly.com/link/188953/rss" style=" color: #0055bb;   "&gt;Rubydex&lt;/a&gt; support gives it a project-wide index, so cops can catch things like duplicate methods &lt;em&gt;across files&lt;/em&gt; and typos in constant and method names.&lt;/p&gt;
  &lt;p&gt;Bozhidar Batsov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 Lovro Bikić also digs into how RuboCop 1.89.0 &lt;a href="https://rubyweekly.com/link/188954/rss" style=" color: #0055bb; font-weight: 600;   "&gt;now loads cops lazily&lt;/a&gt; rather than requiring all 600+ at startup, for a 10-25% startup speedup.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188955/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;redis-rb 6.0: The Official Ruby Client for Redis&lt;/a&gt;&lt;/span&gt; — Now speaks Redis' latest wire protocol &lt;a href="https://rubyweekly.com/link/188956/rss" style=" color: #0055bb;   "&gt;RESP3&lt;/a&gt; by default, adds first-class support for the Redis Query Engine and the JSON module, new Redis 6.2-8.10 commands, and more. Note that Ruby 3.2+ is now required.&lt;/p&gt;
  &lt;p&gt;Redis Ltd &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188957/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;🤖 Ask Your AI Editor What Broke&lt;/a&gt;&lt;/span&gt; — AppSignal's MCP server feeds live Rails errors, traces &amp;amp; metrics into Claude, Cursor &amp;amp; Copilot.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188958/rss" title="thoughtbot.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Humid 1.0: React Server-Side Rendering in Rails without Node.js&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/188959/rss" style=" color: #0055bb;   "&gt;React on Rails&lt;/a&gt; was too heavy, and a Node sidecar didn't appeal… so Johny built a solution using &lt;a href="https://rubyweekly.com/link/188960/rss" style=" color: #0055bb;   "&gt;mini_racer&lt;/a&gt;'s embedded V8 to render React with no Node process to manage at runtime.&lt;/p&gt;
  &lt;p&gt;Johny Ho (Thoughtbot) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/188961/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Flightdeck: A Featureful Dashboard for Solid Queue&lt;/a&gt;&lt;/span&gt; — A more visual, dashboard-like alternative to &lt;a href="https://rubyweekly.com/link/188962/rss" style=" color: #0055bb;   "&gt;Mission Control&lt;/a&gt;, with throughput charts, failure grouping, bulk retry, and queue pause/resume. Drops in with no migrations or asset configuration.&lt;/p&gt;
  &lt;p&gt;Carl Mercier &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188963/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Karafka 2.6&lt;/a&gt; – Powerful multi-threaded, efficient Kafka processing framework.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188964/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.18&lt;/a&gt; – Cooldowns have now been &lt;a href="https://rubyweekly.com/link/188965/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;extended to &lt;code&gt;bundle lock&lt;/code&gt; and &lt;code&gt;bundle cache&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188966/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Git Gem 5.0&lt;/a&gt; – The &lt;code&gt;git&lt;/code&gt; wrapper designed for use from Ruby has breaking changes to be aware of.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188967/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Closure Tree 9.8&lt;/a&gt; – Easily make your Active Record models support hierarchies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188968/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Active Storage Validations 4.0&lt;/a&gt; – Add validations to Active Storage attributes. Now requires Rails 7.0.1+ and Ruby 3.3+.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188969/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rouge 5.1&lt;/a&gt; – Pure Ruby Pygments-compatible syntax highlighter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188970/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Statesman 13.3&lt;/a&gt; – Opinionated state machine library.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;💎 Shipping Ruby code with AI agents? &lt;a href="https://rubyweekly.com/link/188971/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Undercover CI&lt;/a&gt; catches untested methods in your PRs before you merge. Coverage percentages won't.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/188972/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/o5uyy3tvkob8vl3ubopf.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Joe Masilotti's &lt;a href="https://rubyweekly.com/link/188973/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby Native&lt;/a&gt;, a way to deploy Rails apps to mobile app stores without touching Swift or Xcode, &lt;a href="https://rubyweekly.com/link/188972/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;now supports Android&lt;/a&gt; in addition to iOS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇯🇵 &lt;a href="https://rubyweekly.com/link/188974/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;PicoRubyKaigi&lt;/a&gt; is an event taking place in Tokyo this October, focused on the &lt;a href="https://rubyweekly.com/link/188975/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;PicoRuby&lt;/a&gt; Ruby implementation for one-chip microcontrollers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇯🇵 In other Ruby event news, tickets for &lt;a href="https://rubyweekly.com/link/188976/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kaigi on Rails 2026&lt;/a&gt;, also taking place in October, are now available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 SQLite's Richard Hipp gave &lt;a href="https://rubyweekly.com/link/188977/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;▶️ a detailed 50-minute talk on SQLite's reliability&lt;/a&gt; and the tools, practices, and design choices that have given it its strong reputation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ryan Lopopolo explains &lt;a href="https://rubyweekly.com/link/188978/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;why he wound down his Artichoke Ruby project&lt;/a&gt; – &lt;a href="https://rubyweekly.com/link/188979/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Artichoke&lt;/a&gt; was an attempt at building a Ruby implementation in Rust.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/812/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 6 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/812</guid>
    </item>
    <item>
      <title>You need to upgrade Rails 7.x and 8.x now</title>
      <link>https://rubyweekly.com/issues/811</link>
      <description>

  

    
    
  




&lt;table border=0 cellpadding=0 cellspacing=0 align="center" border="0"&gt;
  &lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;div&gt;    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;
&lt;td align="left" style="padding-left: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;#​811 — July 30, 2026&lt;/p&gt;&lt;/td&gt;
&lt;td align="right" style="padding-right: 4px; font-size: 15px; line-height: 1.48em;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188674/rss" style=" color: #0055bb;   "&gt;Read on the Web&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0 12px;"&gt;&lt;p&gt;Ruby Weekly&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/188632/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/thd7ahu0hk8zyue7p5am.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188632/rss" title="discuss.rubyonrails.org" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;A Critical Active Storage Vulnerability in Rails&lt;/a&gt;&lt;/span&gt; — A specially crafted 'image' uploaded to Rails 7.x or 8.x apps in their default configuration can potentially expose arbitrary files on the server via Active Storage's &lt;code&gt;vips&lt;/code&gt; processor. Patched in &lt;a href="https://rubyweekly.com/link/188633/rss" style=" color: #0055bb;   "&gt;Rails 7.2.3.2, 8.0.5.1 and 8.1.3.1&lt;/a&gt;. You may also need to upgrade &lt;code&gt;libvips&lt;/code&gt;. Rails 6.x isn't affected &lt;em&gt;by default&lt;/em&gt;.&lt;/p&gt;
  &lt;p&gt;Rafael França and Rails Core &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 The team that discovered the vulnerability has &lt;a href="https://rubyweekly.com/link/188634/rss" style=" color: #0055bb; font-weight: 600;   "&gt;dubbed it &lt;em&gt;KindaRails2Shell&lt;/em&gt;&lt;/a&gt; and explains more about it. Also note, if you're using Bundler's new &lt;a href="https://rubyweekly.com/link/188675/rss" style=" color: #0055bb; font-weight: 600;   "&gt;cooldown protection&lt;/a&gt;, &lt;code&gt;bundle update rails --cooldown 0&lt;/code&gt; may be needed.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/188631/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/56cf97f0.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188631/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Experts You Like &amp;amp; Trust, Now Embedded in Your Team 🚀&lt;/a&gt;&lt;/span&gt; — Since 2017, companies have trusted &lt;a href="https://rubyweekly.com/link/188635/rss" style=" color: #0055bb;   "&gt;FastRuby.io&lt;/a&gt; with their most complex Rails upgrades. Now those same senior engineers can scale your team fast: shipping features, fixing bugs, accelerating delivery, and using AI effectively. Let's talk!&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Staff Augmentation &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188636/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;The Inliner is Yielding Benefits for ZJIT&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/188637/rss" style=" color: #0055bb;   "&gt;ZJIT&lt;/a&gt;, the experimental just-in-time compiler written in Rust, has added inlining capabilities. This post shows how method inlining speeds up block-heavy code such as &lt;code&gt;Array#each&lt;/code&gt;. Early microbenchmarks are striking, with up to 35x speed gains in one case.&lt;/p&gt;
  &lt;p&gt;Max Bernstein &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🔎 Go to &lt;a href="https://rubyweekly.com/link/188638/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;the official ruby-lang.org site&lt;/a&gt; and hit Cmd/Ctrl+K – it has search!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🏆 &lt;a href="https://rubyweekly.com/link/188639/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Nominations have opened&lt;/a&gt; for this year's &lt;em&gt;Rails Luminary Awards&lt;/em&gt;. &lt;a href="https://rubyweekly.com/link/188640/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Last year's winner&lt;/a&gt; was Marco Roth of &lt;a href="https://rubyweekly.com/link/188641/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Herb&lt;/a&gt; fame.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇪🇺 The sale of &lt;a href="https://rubyweekly.com/link/188642/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;early bird tickets&lt;/a&gt; for &lt;a href="https://rubyweekly.com/link/188643/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Euruko&lt;/a&gt;, taking place this September in Czechia, ends this Saturday.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎂 Rails is celebrating the 22nd anniversary of its first public release: v0.5.0 on July 24, 2004.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188644/rss" title="depthfirst.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Finding 105 Vulnerabilities in the Ruby Ecosystem&lt;/a&gt;&lt;/span&gt; — An app security firm turned its scanner on gems with native C extensions. A Nokogiri out-of-bounds read of 17 years' vintage is a particular highlight.&lt;/p&gt;
  &lt;p&gt;Yu, Thakur, Wu, and Lin (Depthfirst) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188645/rss" title="rubyinside.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Golfing Ruby with Codex: From 250 Bytes to 90&lt;/a&gt;&lt;/span&gt; — I tell the tale of pushing GPT-5.6 Sol to make a Roman numeral generator smaller, ending at 90 bytes. Along the way, many Ruby features popped out: character literals, endless methods, a &lt;code&gt;1.%&lt;/code&gt; exception trick, and a (not so) novel algorithm from 1976.&lt;/p&gt;
  &lt;p&gt;Peter Cooper &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188646/rss" title="blog.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Why Your Sidekiq Jobs Are Slower Than You Think (And How to Fix It)&lt;/a&gt;&lt;/span&gt; — N+1s hide inside your jobs. AppSignal ranks your slowest Sidekiq jobs and queries so you fix the right one. &lt;em&gt;(Blog post.)&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188647/rss" title="mostlyobvio.us" style=" color: #0055bb;    font-size: 1.05em;"&gt;Curiosity Reduced the Heap Size by 60%&lt;/a&gt;&lt;/span&gt; — Agents are often good at diagnosing warnings and errors, but in this case an agent's attempts to &lt;em&gt;ignore&lt;/em&gt; a warning led Paweł to a striking memory use saving.&lt;/p&gt;
  &lt;p&gt;Paweł Pacana &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188648/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spec-tacular: Ways to Think About Writing Expressive RSpec&lt;/a&gt;  &lt;cite&gt;Simon Fish (FreeAgent)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188649/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rake Beyond Rails: A Build Tool You Know&lt;/a&gt; – A reminder of Rake's versatility. &lt;cite&gt;Francois Buys&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188650/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Overriding Rails' Default Validation Error Message Format&lt;/a&gt;  &lt;cite&gt;Tekin Süleyman&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/188651/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/hthtq6rhsl5iuzfzrqwm.jpg" width="640" style="        line-height: 100%;  "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188651/rss" title="st0012.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;RubyLens: Turn Your Ruby Project into a Galaxy Visualization&lt;/a&gt;&lt;/span&gt; — A gem that turns a Ruby codebase into a galaxy, in either HTML or video form, built on top of &lt;a href="https://rubyweekly.com/link/188652/rss" style=" color: #0055bb;   "&gt;Rubydex&lt;/a&gt; which performs the analysis. The site contains a few pre-built examples to enjoy. &lt;a href="https://rubyweekly.com/link/188653/rss" style=" color: #0055bb;   "&gt;GitHub repo&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Stan Lo &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188655/rss" title="undercover-ci.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;4 Ways to Steer Your Agents Towards Better Tests&lt;/a&gt;&lt;/span&gt; — Agents quit when the happy path is green. Undercover keeps them honest with local tools and CI checks for your team.&lt;/p&gt;
  &lt;p&gt;Undercover CI &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188654/rss" title="railsdesigner.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Courrier 1.0: A Gem to Send Emails Without SMTP&lt;/a&gt;&lt;/span&gt; — Brings the ability to send email through 13 providers and 7 newsletter platforms into a single library. There's also a Rails integration which brings generators and Active Job support.&lt;/p&gt;
  &lt;p&gt;Rails Designer &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🤖&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/188656/rss" title="www.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Automating Ruby Tech Debt Audits with Claude Code&lt;/a&gt;&lt;/span&gt; — Introduces a Claude Code skill (which &lt;a href="https://rubyweekly.com/link/188657/rss" style=" color: #0055bb;   "&gt;you can read here&lt;/a&gt;) that strings together a variety of tools to produce a scored, one-shot quality report for Ruby projects.&lt;/p&gt;
  &lt;p&gt;Ernesto Tagwerker &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188676/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Queue 1.5&lt;/a&gt; – DB-based queuing backend for Active Job. Lots of bugfixes, polling interval now defaults to 1 second, and there's a new &lt;code&gt;bin/jobs check&lt;/code&gt; command to validate your config.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188659/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RBS 4.1&lt;/a&gt; – The official language for writing type signatures for Ruby now supports JRuby and adds a &lt;code&gt;Rewriter&lt;/code&gt; API.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🖼️ &lt;a href="https://rubyweekly.com/link/188660/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RMagick 7.1&lt;/a&gt; – The long-standing ImageMagick bindings get bug fixes, plus big changes to how text strings drawn by &lt;code&gt;Draw#annotate&lt;/code&gt; are handled.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188661/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SimpleCov 1.0.3&lt;/a&gt; – Code coverage tool. If you missed the big &lt;a href="https://rubyweekly.com/link/188662/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;1.0 release&lt;/a&gt;, check it out as the new report UI is great.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188663/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;telegram-bot-ruby 2.8&lt;/a&gt; – Ruby wrapper for &lt;a href="https://rubyweekly.com/link/188664/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Telegram Bot API&lt;/a&gt; 10.x.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188665/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;MCP Ruby SDK 1.0&lt;/a&gt; – Official Ruby SDK for the &lt;a href="https://rubyweekly.com/link/188666/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Model Context Protocol&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188667/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Gibbon 4.0&lt;/a&gt; – MailChimp Marketing API wrapper for Ruby.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/811/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/811</guid>
    </item>
  </channel>
</rss>
