<?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>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>
    <item>
      <title>Why RubyGems just revoked every legacy API key</title>
      <link>https://rubyweekly.com/issues/810</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;#​810 — July 23, 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/188349/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/188303/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/bddtb2tsghzwsjwlzkys.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;span&gt;🔒&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/188303/rss" title="blog.rubygems.org" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;RubyGems Revokes Legacy API Keys After Possible Cache Leak&lt;/a&gt;&lt;/span&gt; — A CDN caching bug, which has existed for years, could have served accounts' legacy API keys to other users. There's no evidence of malicious use, but it's worth affected owners checking their gems over nonetheless.&lt;/p&gt;
  &lt;p&gt;Colby Swandale (Ruby Central) &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;💡 Luke Marshall, from Truffle Security, discovered this bug and did &lt;a href="https://rubyweekly.com/link/188304/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a full technical writeup&lt;/a&gt; of how the bug could have been exploited.&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/188302/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/ab08b8fa.png" width="120" height="120" 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/188302/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;All-in-One Ruby &amp;amp; Rails Monitoring — Errors + Performance&lt;/a&gt;&lt;/span&gt; — Track errors, N+1 queries, slow SQL, Sidekiq jobs, and host metrics — all in one Ruby gem. AppSignal gives Rails teams every feature on every plan, with predictable pricing and real engineers on support. &lt;a href="https://rubyweekly.com/link/188302/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/188305/rss" title="baweaver.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Beyond Enumerable: Testing Membership with Bloom Filters&lt;/a&gt;&lt;/span&gt; — When &lt;code&gt;include?&lt;/code&gt; over a huge collection gets expensive, a &lt;a href="https://rubyweekly.com/link/188306/rss" style=" color: #0055bb;   "&gt;Bloom filter&lt;/a&gt; can answer 'definitely &lt;em&gt;not&lt;/em&gt; present' with fixed memory and constant-time lookups. Brandon builds one in Ruby, covering all the details.&lt;/p&gt;
  &lt;p&gt;Brandon Weaver &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;💡 If you want to understand how Bloom filters work at a high level, &lt;a href="https://rubyweekly.com/link/188306/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Sam Rose's visual Bloom filter explainer&lt;/a&gt; is fantastic.&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;Matz has accepted &lt;a href="https://rubyweekly.com/link/188307/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a proposal to bring more bit-level operations to &lt;code&gt;String&lt;/code&gt;&lt;/a&gt;, including &lt;code&gt;bit_count&lt;/code&gt;, &lt;code&gt;bit_get&lt;/code&gt; and &lt;code&gt;bit_set&lt;/code&gt; (&lt;a href="https://rubyweekly.com/link/188308/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;PR here&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No RubyConf videos &lt;em&gt;yet&lt;/em&gt;, but Confreaks has uploaded &lt;a href="https://rubyweekly.com/link/188309/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;seventeen videos from &lt;em&gt;Blastoff Rails 2026&lt;/em&gt;&lt;/a&gt;, an event that took place in Albuquerque last month.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188310/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyMine 2026.2 has been released&lt;/a&gt;. It's the latest version of JetBrains' commercial Ruby IDE with RBS, code insight, and AI-related enhancements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://rubyweekly.com/link/188311/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;CFP for &lt;em&gt;SF Ruby&lt;/em&gt;&lt;/a&gt;, taking place in San Francisco this November, closes on July 27 (next Monday). Tickets are now on sale 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;a href="https://rubyweekly.com/link/188312/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RuboCop 2.0: Where Do We Go Now?&lt;/a&gt;&lt;/span&gt; — At RubyConf Austria (&lt;a href="https://rubyweekly.com/link/188313/rss" style=" color: #0055bb;   "&gt;all the videos are here&lt;/a&gt;) the creator of &lt;a href="https://rubyweekly.com/link/188314/rss" style=" color: #0055bb;   "&gt;RuboCop&lt;/a&gt; gave a dense state of the union update on the project and how it's continuing to improve.&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;&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/188315/rss" title="danielabaron.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;How I Stopped Running out of Tokens&lt;/a&gt;&lt;/span&gt; — A Rubyist whose company uses Claude Enterprise shares numerous tools you can use (such as &lt;a href="https://rubyweekly.com/link/188316/rss" style=" color: #0055bb;   "&gt;rtk&lt;/a&gt;) to get the most out of assigned limits.&lt;/p&gt;
  &lt;p&gt;Daniela Baron &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/188317/rss" title="sinaptia.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;Using OpenSpec in Rails Applications&lt;/a&gt;&lt;/span&gt; — See how OpenSpec is reshaping our Rails workflow. What paid off, what failed, and what we’d do differently.&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;a href="https://rubyweekly.com/link/188318/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Active Model Conditional Validations&lt;/a&gt; – A tour of conditional validations, from &lt;a href="https://rubyweekly.com/link/188319/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;custom contexts&lt;/a&gt; to &lt;code&gt;validation_context&lt;/code&gt;, plus a case for splitting divergent behavior into separate classes instead. &lt;cite&gt;Kevin Murphy&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188320/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;A Proposal for Deprecating &lt;code&gt;ruby2_keywords&lt;/code&gt;&lt;/a&gt; – Dropping the compatibility mechanism introduced for the Ruby 2-to-3 keyword arguments separation seems obvious, but will have knock-on effects. &lt;cite&gt;Shugo Maeda&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/188321/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;'Poor Man's Escape Analysis': A Proposed CRuby Optimization&lt;/a&gt; &lt;cite&gt;Yusuke Endoh&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/188322/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/an0xnckaandro7uetvrt.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;"&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/188322/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;TableTennis 1.0: Stylish Terminal Tables&lt;/a&gt;&lt;/span&gt; — A library for printing tabular data on the terminal that includes theming, automatic layout, automatic formatting of dates and numbers, coloring of numeric values, and more.&lt;/p&gt;
  &lt;p&gt;Adam Doppelt &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/188323/rss" title="www.jruby.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;JRuby 10.1.1.0: Faster Number Parsing and Security Fixes&lt;/a&gt;&lt;/span&gt; — The Ruby 4.0-targeting JVM implementation gains faster number parsing, OpenBSD support, and OpenSSL and ERB security fixes.&lt;/p&gt;
  &lt;p&gt;Charles Oliver Nutter 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;a href="https://rubyweekly.com/link/188324/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Need More Rails Capacity? Speed Up Your Product Roadmap Next Week 🚀&lt;/a&gt;&lt;/span&gt; — Rails devs who integrate fast, ship quality code &amp;amp; help your team deliver more each sprint. We vet them, you ship more.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Rails Staff Aug &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/188325/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Audition: See if a Ruby Program Can Run Inside Ractors&lt;/a&gt;&lt;/span&gt; — A tool you can point at a Ruby script, gem, Rack or Rails app, and it tells you if it can run within &lt;a href="https://rubyweekly.com/link/188326/rss" style=" color: #0055bb;   "&gt;Ractors&lt;/a&gt;, Ruby's experimental actor-based parallel execution mechanism. And if not, it explains why.&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;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/188327/rss" title="rigor.typedduck.fail" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rigor: Type-Aware Ruby Static Analyzer and Bug Finder&lt;/a&gt;&lt;/span&gt; — Unlike Sorbet or Steep, no annotations are required. Rigor infers types from the values your code produces, while treating any RBS you have as authoritative.&lt;/p&gt;
  &lt;p&gt;Usami 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;a href="https://rubyweekly.com/link/188328/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Pygments.rb 5.0: A Ruby Wrapper for the Pygments Syntax Highlighter&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/188329/rss" style=" color: #0055bb;   "&gt;Pygments&lt;/a&gt; is one of the best syntax highlighters out there, but it's Python-based. This library makes it easier to call. v5.0 bumps Pygments up to the latest version.&lt;/p&gt;
  &lt;p&gt;Nyman, Gupta and Radchenko &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;💡 Alternatively, &lt;a href="https://rubyweekly.com/link/188330/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Rouge&lt;/a&gt; is a pure Ruby Pygments-compatible code highlighter.&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/188331/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;React on Rails 17.0&lt;/a&gt; – A complete way to integrate React into Rails apps. Now with full support for React 19 and streaming server rendering. (&lt;a href="https://rubyweekly.com/link/188332/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Homepage&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188333/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RuboCop Minitest 0.40&lt;/a&gt; – Extension for enforcing Minitest best practices and coding conventions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188334/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Gemsmith 26.0&lt;/a&gt; – CLI tool for creating and managing Ruby gems following common best practices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188335/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rack::Proxy 1.0&lt;/a&gt; – Request/response rewriting HTTP proxy for Rack apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/188336/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.17&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;"&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;🤖 No vibes, just vitals. &lt;a href="https://rubyweekly.com/link/188337/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;AppSignal's MCP server&lt;/a&gt; brings Rails errors, traces &amp;amp; metrics into Claude, Cursor &amp;amp; Copilot. Debug in your editor.&lt;/p&gt;
 
&lt;p&gt;Your Rails app logs events all day. &lt;a href="https://rubyweekly.com/link/188338/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TimescaleDB&lt;/a&gt; turns them into real-time analytics, right in the Postgres you already run.&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;😅  An Old/New Ruby Discovery of the Week&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 recently got the itch to see what I'm getting for Christmas. Well, what's coming in Ruby 4.1, anyway. It's not going to be a &lt;em&gt;big&lt;/em&gt; release syntax-wise, but there are a variety of new methods and features I'll share in coming weeks.&lt;/p&gt;
&lt;p&gt;My first surprise, though, was the enhancement of a method added back in Ruby 2.4 that I had not noticed: &lt;a href="https://rubyweekly.com/link/188339/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;String#unpack1&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unpack1&lt;/code&gt; is basically &lt;code&gt;unpack&lt;/code&gt; that only returns the first extracted value. You'd use these methods &lt;a href="https://rubyweekly.com/link/188340/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;when working with packed data&lt;/a&gt;, perhaps when parsing binary files, random protocols, network data, and the like.&lt;/p&gt;
&lt;p&gt;So if, like me, you didn't know about &lt;code&gt;unpack1&lt;/code&gt; or the Ruby docs' surprisingly thorough &lt;a href="https://rubyweekly.com/link/188341/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Packed Data page&lt;/a&gt; which is &lt;em&gt;*ahem*&lt;/em&gt; &lt;em&gt;packed&lt;/em&gt; with examples, now you do.&lt;/p&gt;
&lt;p&gt;The Ruby 4.1 change? &lt;code&gt;unpack&lt;/code&gt;/&lt;code&gt;unpack1&lt;/code&gt; are getting new directives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;R&lt;/code&gt; for unsigned &lt;a href="https://rubyweekly.com/link/188342/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;LEB128&lt;/a&gt; (Little Endian Base 128) as used in DWARF and WASM.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;r&lt;/code&gt; for signed LEB128.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;^&lt;/code&gt; to return the current byte offset (more useful than it sounds).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;x!&lt;/code&gt; and &lt;code&gt;@!&lt;/code&gt; are new alignment directives to handle padding in binary formats by advancing the cursor to aligned byte positions, relative to the record's starting offset (e.g. &lt;code&gt;x!4&lt;/code&gt;) and the whole string (&lt;code&gt;@!4&lt;/code&gt;) respectively.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're not tinkering around with packing and unpacking data, you might not have any use for these, but for my sins I enjoy low-level noodling with binary data in Ruby, so am looking forward to experimenting more.&lt;/p&gt;
&lt;p&gt;This is a niche topic, but I learnt something, this is my newsletter, and hopefully I'll get to some more useful Ruby 4.1 additions for you next time ;-)&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/810/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/810</guid>
    </item>
  </channel>
</rss>
