<?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>Rails' next rich text editor hits 1.0</title>
      <link>https://rubyweekly.com/issues/819</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;#​819 — October 1, 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/191121/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/191063/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/uudizcraa0cb23qxa1zb.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/191063/rss" title="dev.37signals.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Lexxy 1.0: Rails' New Rich Text Editor to Replace Trix&lt;/a&gt;&lt;/span&gt; — Built on &lt;a href="https://rubyweekly.com/link/191064/rss" style=" color: #0055bb;   "&gt;Lexical&lt;/a&gt; and already powering 37signals' Basecamp 5, it gives you tables, Markdown shortcuts, smart links, syntax-highlighted code and mentions, and it's easy to swap into &lt;a href="https://rubyweekly.com/link/191065/rss" style=" color: #0055bb;   "&gt;Action Text&lt;/a&gt; in place of &lt;a href="https://rubyweekly.com/link/191066/rss" style=" color: #0055bb;   "&gt;Trix&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Jorge Manrubia (37signals) &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 &lt;a href="https://rubyweekly.com/link/191067/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Lexxy site&lt;/a&gt; has &lt;a href="https://rubyweekly.com/link/191068/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a sandbox demo&lt;/a&gt; if you'd like to try it out first.&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/191062/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/00ac7ccd.png" width="140" height="140" 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/191062/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Switching APM? One Ruby Gem Now Covers Distributed Tracing&lt;/a&gt;&lt;/span&gt; — Errors, N+1s, Sidekiq jobs, logs, host metrics and now distributed tracing (beta) in one Ruby gem. Every feature on every plan, unlimited users, one predictable bill. See how AppSignal compares to Datadog, New Relic and Sentry.&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/191069/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Tenderlove Closes Rails World with a Counterpoint to DHH&lt;/a&gt;&lt;/span&gt; — Aaron's Rails World closing keynote dug into ZJIT, Ractors, Mike Dalessio joining Rails Core, and Ruby 4.0's &lt;a href="https://rubyweekly.com/link/191123/rss" style=" color: #0055bb;   "&gt;disappearing &lt;code&gt;Class#new&lt;/code&gt; stack frame&lt;/a&gt;. He also pushed back on DHH's keynote (which we &lt;a href="https://rubyweekly.com/link/191122/rss" style=" color: #0055bb;   "&gt;boiled down last week&lt;/a&gt;), saying &lt;em&gt;"I'm going to keep reading my code, and I hope that you will too."&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;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;💡 Meanwhile, &lt;a href="https://rubyweekly.com/link/191071/rss" style=" color: #0055bb; font-weight: 600;   "&gt;▶️ Matz and DHH had a 'fireside chat'&lt;/a&gt; hosted by Jeremy Daer, largely covering Ruby's place in the AI era, with Matz discussing &lt;a href="https://rubyweekly.com/link/191072/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Spinel&lt;/a&gt; and DHH saying he'll still start all his new web apps on Rails.&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;New Rails 8.2 apps will &lt;a href="https://rubyweekly.com/link/191073/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;compile HTML+ERB templates through Herb by default&lt;/a&gt;, so an issue like an unclosed tag becomes a compile error. &lt;a href="https://rubyweekly.com/link/191074/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Herb 0.11&lt;/a&gt; is out too, and there's &lt;a href="https://rubyweekly.com/link/191075/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a write-up of Marco Roth's &lt;em&gt;Rails World&lt;/em&gt; talk&lt;/a&gt; for context.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191076/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;An adjustable compilation budget has landed for Ruby 4.1's YJIT&lt;/a&gt;, letting apps spread warmup overhead over time to reduce latency spikes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shugo Maeda &lt;a href="https://rubyweekly.com/link/191077/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;proposes letting refinements define &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; and &lt;code&gt;||&lt;/code&gt;&lt;/a&gt; for more natural query DSLs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191078/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails 7.2.4 was released last week&lt;/a&gt; as the final 7.2.x release. Security and bug fixes will now only be provided for 8.0 and 8.1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hiroshi Shibata has &lt;a href="https://rubyweekly.com/link/191079/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an open PR bringing YJIT to 64-bit MSVC builds of Ruby on Windows&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/191080/rss" title="ivoanjo.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;Updating C Extensions for the Modern Ruby VM&lt;/a&gt;&lt;/span&gt; — Ruby's C API is stable enough that ancient C extensions often still &lt;em&gt;run&lt;/em&gt; on Ruby 4, but they may not play as well with modern VM features as they could. Ivo has created &lt;a href="https://rubyweekly.com/link/191081/rss" style=" color: #0055bb;   "&gt;this handy (and official) document&lt;/a&gt; for bringing older extensions up to date.&lt;/p&gt;
  &lt;p&gt;Ivo Anjo &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/191082/rss" title="aaronmallen.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;Hanami, Why? A Maintainer on Building Apps Differently to Rails&lt;/a&gt;&lt;/span&gt; — A Hanami maintainer begins a series explaining what makes Hanami different to Rails with a tour of its core building blocks.&lt;/p&gt;
  &lt;p&gt;Aaron Allen &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/191083/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🤖 Ready for Rails Upgrades on Autopilot? Rails 8.0 EOL Nov 7&lt;/a&gt;&lt;/span&gt; — Our AI agent opens tiny, reviewable PRs once your test suite passes CI. Starting at $497/mo.&lt;/p&gt;
  &lt;p&gt;FastRuby.io | Rails Upgrades on Autopilot &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/191084/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Access Control for AI Agents on Rails: Gating SQL with Action Policy&lt;/a&gt; – How to make an LLM's SQL queries obey your &lt;a href="https://rubyweekly.com/link/191085/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Action Policy&lt;/a&gt; rules. &lt;cite&gt;Platonov and Senkovskiy (Evil Martians)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191086/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Why You Should Check a Gem's Lines of Code&lt;/a&gt; – A rough measure of complexity when choosing dependencies. &lt;cite&gt;Kasper Timm Hansen (Spinel)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191087/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Renaming a Rails Job Without Breaking Queued Work&lt;/a&gt; &lt;cite&gt;Rails Revelry&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/191088/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qmj3ih633sqlvhdr4vy3.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/191088/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Madmin 3: A Hotwire-Powered Rails Admin Interface&lt;/a&gt;&lt;/span&gt; — A Rails admin built around scaffold-style views and Hotwire rather than a heavy DSL. v3 adds dark mode, filters on index pages, and replaces Pagy with built-in pagination.&lt;/p&gt;
  &lt;p&gt;Chris Oliver &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/191089/rss" title="spinel.coop" style=" color: #0055bb;    font-size: 1.05em;"&gt;rv 0.7: The '&lt;code&gt;uv&lt;/code&gt; for Ruby' Adds JRuby and a Built-In Formatter&lt;/a&gt;&lt;/span&gt; — The fast Ruby version and gem manager can now install and manage JRuby too, and adds a &lt;code&gt;librubyfmt&lt;/code&gt;-powered &lt;code&gt;rv fmt&lt;/code&gt; command to format code. Here's &lt;a href="https://rubyweekly.com/link/191090/rss" style=" color: #0055bb;   "&gt;how to get started with &lt;code&gt;rv&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Spinel Cooperative &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/191091/rss" title="serpapi.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Build Smarter Ruby Applications With Live Search Data&lt;/a&gt;&lt;/span&gt; — Add search, shopping, maps, news, trends, flights and hotels results with one developer-friendly API built by Ruby engineers.&lt;/p&gt;
  &lt;p&gt;SerpApi &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/191092/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Singed 0.4: Get a Flamegraph Anywhere in Your Code Base&lt;/a&gt;&lt;/span&gt; — Wrap code in &lt;code&gt;flamegraph { }&lt;/code&gt; to profile it with &lt;a href="https://rubyweekly.com/link/191093/rss" style=" color: #0055bb;   "&gt;stackprof&lt;/a&gt; or, new in v0.4, &lt;a href="https://rubyweekly.com/link/191094/rss" style=" color: #0055bb;   "&gt;Vernier&lt;/a&gt; (which gives per-thread graphs), and view the results with &lt;a href="https://rubyweekly.com/link/191095/rss" style=" color: #0055bb;   "&gt;speedscope&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Gusto &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/191096/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Active Search: Pluggable Full-Text Search for Rails Apps&lt;/a&gt;&lt;/span&gt; — A new &lt;em&gt;alpha&lt;/em&gt; gem that gives Active Record models one search API across ten backends, from SQLite FTS5 and Postgres &lt;code&gt;tsvector&lt;/code&gt; to Elasticsearch, Meilisearch and Typesense.&lt;/p&gt;
  &lt;p&gt;Donal McBreen (37signals) &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/191097/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Herringbone: Pure-Ruby Parquet File Reader/Writer Library&lt;/a&gt;&lt;/span&gt; — Includes full nesting support, filtered reads using statistics and bloom filters, plus &lt;code&gt;Herringbone.write(io, Order.all)&lt;/code&gt; for dumping AR relations to Parquet.&lt;/p&gt;
  &lt;p&gt;Julik Tarkhanov &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/191098/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RDoc 8.1&lt;/a&gt; – Ruby's documentation generator gets faster Markdown parsing and deprecates the Darkfish template. &lt;a href="https://rubyweekly.com/link/191099/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The RDoc site&lt;/a&gt; is a good demo of how it looks by default now.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191100/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Campfire 1.5&lt;/a&gt; – 37signals' Rails-powered chat app. Bots can now read messages (even when not mentioned), add reactions, and edit their own messages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191101/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Cable 4.1&lt;/a&gt; – Rails' database-backed Action Cable adapter. Adds encrypted messages and batched writes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191102/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;gems 3.0&lt;/a&gt; – Official Ruby client for the &lt;a href="https://rubyweekly.com/link/191103/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems.org&lt;/a&gt; API. Adds modernizations including trusted publishing and OTP support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🖼️ &lt;a href="https://rubyweekly.com/link/191104/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;PureJPEG 0.4&lt;/a&gt; – Pure Ruby JPEG encoder/decoder. Now works on &lt;a href="https://rubyweekly.com/link/191072/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt; too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191105/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Brakeman 8.1&lt;/a&gt; – Static analysis security scanner for Rails apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191106/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Mutineer 1.4&lt;/a&gt; – Mutation testing for Ruby code.&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;💀 Your site is dead, bro! Will you hear it from &lt;a href="https://rubyweekly.com/link/191107/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;DeadBro.com&lt;/a&gt; or from your users? N+1s, errors, slow SQL, uptime, Slack alerts.&lt;/p&gt;
 
&lt;p&gt;Bring your wild ideas to &lt;a href="https://rubyweekly.com/link/191108/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Mozilla Festival&lt;/a&gt;. Gather and connect with other developers and creatives in Barcelona, Oct. 28-30. &lt;a href="https://rubyweekly.com/link/191108/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Get your badge&lt;/a&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;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;👠  A modern rewrite of _why's Shoes&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;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ydvbs1ql0cbd1euw4h7m.jpg" width="640" style="    line-height: 100%;    "&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;Back in 2007, the mysterious and much-loved &lt;a href="https://rubyweekly.com/link/191109/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;_why the lucky stiff&lt;/a&gt; created &lt;a href="https://rubyweekly.com/link/191110/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Shoes&lt;/a&gt;, a tiny toolkit for building desktop apps in Ruby. It famously powered &lt;a href="https://rubyweekly.com/link/191111/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Hackety Hack&lt;/a&gt;, his app for teaching people to code in Ruby.&lt;/p&gt;
&lt;p&gt;Over the years, Nick Schwaderer and contributors have been resurrecting Shoes in the form of &lt;a href="https://rubyweekly.com/link/191112/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Scarpe&lt;/a&gt; (Italian for &lt;em&gt;shoes&lt;/em&gt;!) which runs the same Shoes code rendered to a webview.&lt;/p&gt;
&lt;p&gt;As of this week, Scarpe now has &lt;a href="https://rubyweekly.com/link/191113/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an (initial) native renderer written in Rust.&lt;/a&gt; &lt;em&gt;"Ruby thinks and Rust draws"&lt;/em&gt;: your app and its blocks stay in Ruby, while a separate Rust process lays out and paints the window. It can package apps for macOS and comes with &lt;a href="https://rubyweekly.com/link/191114/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a guide for coding agents&lt;/a&gt; so you can ask one to build you an app (as I tried, successfully – see the screenshot above).&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/819/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 1 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/819</guid>
    </item>
    <item>
      <title>What if your Rails app didn't need Rails?</title>
      <link>https://rubyweekly.com/issues/818</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;#​818 — September 24, 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/190858/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;🤔 DHH opened &lt;a href="https://rubyweekly.com/link/190800/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Rails World&lt;/a&gt; yesterday with a keynote that may have implications for Rubyists. I know readers like and loathe DHH in equal measure, so my writeup is at the end of this issue to either read or skip as you prefer.&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/190853/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wng5kodnohn1rkhddjja.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/190853/rss" title="intertwingly.net" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Benchmarking Compiled-Away Rails on Three Rubies&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/190854/rss" style=" color: #0055bb;   "&gt;Roundhouse&lt;/a&gt; can compile (some!) Rails apps to simpler &lt;a href="https://rubyweekly.com/link/190855/rss" style=" color: #0055bb;   "&gt;Spinel&lt;/a&gt;-compatible Ruby. But how does "Rails-free" Ruby fare on CRuby, JRuby and TruffleRuby? In Sam's tests, 3-17x faster than Rails, though TruffleRuby, the fastest at running stock Rails, gains least.&lt;/p&gt;
  &lt;p&gt;Sam Ruby &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;💡 Want to try for yourself? &lt;a href="https://rubyweekly.com/link/190856/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Roundhouse has been released&lt;/a&gt;, with Matz 𝕏 &lt;a href="https://rubyweekly.com/link/190857/rss" style=" color: #0055bb; font-weight: 600;   "&gt;showing at Euruko&lt;/a&gt; he used it to compile &lt;em&gt;Campfire&lt;/em&gt; to run on Spinel using 12x less memory. Bear in mind Roundhouse is still experimental and doesn't support every Rails feature.&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/190801/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/46a41415.png" width="140" height="140" 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/190801/rss" title="hello.cedarcode.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Your Rails Startup Is Growing Faster Than Your Team&lt;/a&gt;&lt;/span&gt; — Cedarcode adds senior Ruby/Rails engineers who learn your product, figure out what needs to happen next, and stick with problems until they're solved. More capacity as you scale, without more management overhead.&lt;/p&gt;
  &lt;p&gt;Cedarcode &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/190802/rss" title="rubyllm.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RubyLLM 2.0: A Big Upgrade for the Popular AI Framework&lt;/a&gt;&lt;/span&gt; — Its biggest release yet adds video and speech generation, human approval for tools, and caching, fallbacks and batches across providers. The agentic loop is also now &lt;a href="https://rubyweekly.com/link/190803/rss" style=" color: #0055bb;   "&gt;exposed as steps&lt;/a&gt; you can drive yourself.&lt;/p&gt;
  &lt;p&gt;Carmine Paolino 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;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/190804/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby 3.4.11&lt;/a&gt; is a routine bugfix release, fixing a &lt;a href="https://rubyweekly.com/link/190805/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;stack corruption bug&lt;/a&gt; that could be triggered by methods with over 31 keyword args. A fix for Ruby 4.0 is still forthcoming.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190806/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JRuby 10.1.2.0&lt;/a&gt; brings many fiber scheduler fixes and faster subclassing of Java classes. It and &lt;a href="https://rubyweekly.com/link/190807/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JRuby 10.0.7.0&lt;/a&gt; both fix a startup speed issue on macOS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Of 200+ vulnerability reports sent to Ruby this year, over 98% were &lt;em&gt;"AI slop or unverified"&lt;/em&gt;, 𝕏 &lt;a href="https://rubyweekly.com/link/190808/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;says Hiroshi Shibata&lt;/a&gt;, with only four becoming CVEs.&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/190811/rss" title="rubyonrails.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails 8.1.4 Released&lt;/a&gt;&lt;/span&gt; — A hefty bug-fix release (&lt;a href="https://rubyweekly.com/link/190812/rss" style=" color: #0055bb;   "&gt;all listed here&lt;/a&gt;), most notably stopping &lt;code&gt;update_all&lt;/code&gt; and &lt;code&gt;delete_all&lt;/code&gt; from ignoring &lt;code&gt;having&lt;/code&gt; clauses.&lt;/p&gt;
  &lt;p&gt;Rafael Franca &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/190813/rss" title="bernsteinbear.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Support Local Variables&lt;/a&gt;&lt;/span&gt; — A paper (&lt;a href="https://rubyweekly.com/link/190814/rss" style=" color: #0055bb;   "&gt;PDF&lt;/a&gt;) from the ZJIT team – to be presented at &lt;a href="https://rubyweekly.com/link/190815/rss" style=" color: #0055bb;   "&gt;VMIL 2026&lt;/a&gt; next month – on the Ruby features that make local variables hard to compile, and how CRuby's new JIT optimizes them aggressively.&lt;/p&gt;
  &lt;p&gt;Bernstein, Kokubun, Patterson, Wu and Menard &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/190816/rss" title="evilmartians.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Hyperdrive: Supercharged Agentic Development for Rails&lt;/a&gt;&lt;/span&gt; — A dev-only Rails engine giving coding agents MCP tools to query your running app, plus skills from your gems, matched to your bundle.&lt;/p&gt;
  &lt;p&gt;Albert Pazderin (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;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190810/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails World Week: One Gem for Errors, N+1s, Sidekiq and Logs&lt;/a&gt;&lt;/span&gt; — APM built for Ruby and Rails. Every feature on every plan, unlimited users, one bill. &lt;a href="https://rubyweekly.com/link/190810/rss" style=" color: #0055bb;   "&gt;30-day trial, no 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;a href="https://rubyweekly.com/link/190817/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Herb on Rails&lt;/a&gt; – Auditing an app's views with Herb, now that it's &lt;a href="https://rubyweekly.com/link/190818/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;directly supported&lt;/a&gt; in edge Rails. &lt;cite&gt;Juan Vasquez (FastRuby.io)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190819/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Building a Web Crawler in Ruby with Vessel 0.3&lt;/a&gt; – A walkthrough of Ruby's Scrapy-like framework. &lt;cite&gt;Josef Strzibny&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📺 &lt;a href="https://rubyweekly.com/link/190820/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Design and Implementation of ZJIT, and the Next Five Years&lt;/a&gt; &lt;cite&gt;Max Bernstein&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/190821/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nmk7flf3ulcsxbfvcdy5.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/190821/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Amazing Print 3.0: Pretty Print Your Ruby Objects with Style&lt;/a&gt;&lt;/span&gt; — A fork of the long-fallow &lt;a href="https://rubyweekly.com/link/190822/rss" style=" color: #0055bb;   "&gt;AwesomePrint&lt;/a&gt; that continues to get updates. v3.0 adds Ruby 4.0 support, more options, and updates dependencies.&lt;/p&gt;
  &lt;p&gt;AmazingPrint &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/190825/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 7.2 is EOL, 8.0 Support Ends Nov 7. Is Your App Ready?&lt;/a&gt;&lt;/span&gt; — "FastRuby.io upgraded our app to Rails 8.1 on time and on budget." 🤖 AI + our senior team, fixed monthly fee.&lt;/p&gt;
  &lt;p&gt;Bonsai by FastRuby.io® &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/190823/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;HotCell: Securely Run Untrusted Code on Untrusted Inputs&lt;/a&gt;&lt;/span&gt; — A &lt;em&gt;"still pre-release"&lt;/em&gt; way to hand untrusted input processing work (e.g. processing user uploaded files) off to a separate process in a container for improved security and to reduce the potential for fallout from things like &lt;a href="https://rubyweekly.com/link/190824/rss" style=" color: #0055bb;   "&gt;Active Storage's recent vulnerability&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;37signals &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/190826/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Suture 1.2: A Tool for Refactoring Legacy Code&lt;/a&gt;&lt;/span&gt; — Create ‘seams’ around code you want to refactor, record its inputs and outputs, then verify your rewrite against them and run both side by side. v1.2 is the first release in 8 years and adds Ruby 3.4 and 4.0 support.&lt;/p&gt;
  &lt;p&gt;Test Double &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/190835/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Gem in a Box 4.0&lt;/a&gt; – Self-hosted gem server. Now serves the compact index Bundler prefers, and drops the long-sunset RubyGems proxy mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190831/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Extralite 3.1&lt;/a&gt; – Fast, lightweight SQLite library. Now caches prepared statements for parameterized queries automatically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190832/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Receipts 3.0&lt;/a&gt; – Library to generate PDF receipts, invoices and statements. Now uses a pure-Ruby PDF generator instead of Prawn.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190833/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails Pulse 0.4&lt;/a&gt; – Self-hosted performance dashboard for Rails (see what it looks like &lt;a href="https://rubyweekly.com/link/190834/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;here&lt;/a&gt;). Now tracks exceptions too.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190830/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Magnus 0.9&lt;/a&gt; – Write Ruby extensions in Rust. Now also works with the in-development Ruby 4.1.&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/190836/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;&lt;a href="https://rubyweekly.com/link/190837/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;At Rails World? Say hi to the AppSignal team in Austin&lt;/a&gt;. Demos, swag and honest answers about your monitoring bill.&lt;/p&gt;
 
&lt;p&gt;🌍 &lt;b&gt;New keys in config/locales?&lt;/b&gt; &lt;a href="https://rubyweekly.com/link/190838/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Localhero&lt;/a&gt; translates them on-brand in the same PR, consistent with your existing translations. Your team tweaks copy, not YAML.&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;The DHH Rails World 2026 Keynote&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/190839/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gl9fh3wkahg1wrklyeco.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;No stranger to controversy, DHH said his keynote might &lt;em&gt;"ruffle a few feathers"&lt;/em&gt; and it certainly did, judging by the reaction on social media and &lt;a href="https://rubyweekly.com/link/190840/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;this extensive Reddit thread&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No Rails news.&lt;/strong&gt; The keynote, &lt;a href="https://rubyweekly.com/link/190839/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;▶️ which you can watch here&lt;/a&gt;, will leave anyone hoping for Rails news disappointed. In a departure from prior keynotes, he didn't cover any new core Rails developments, though this may not be a total surprise (his last commit to the Rails repo was in December 2025).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pencils down?&lt;/strong&gt; A key theme was 37signals' now almost total use of coding agents to build software, increasingly in non-Ruby languages like Rust (which HEY's backend is being rewritten in). He called the move away from hand coding &lt;em&gt;"the biggest thing that has happened in the history of computing"&lt;/em&gt; and predicted this would quickly become the status quo.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Writing less code, more English.&lt;/strong&gt; He replayed a clip from a 2005 talk where he was building a Rails app on stage, reflecting: &lt;em&gt;"I was so excited about all the code I wasn't writing."&lt;/em&gt; His argument is agentic development takes Rails' idea of convention over configuration to its extreme, by describing what you want and, now, writing &lt;em&gt;no&lt;/em&gt; code. He went further, declaring English &lt;em&gt;"a better programming language than Ruby."&lt;/em&gt; 🫢&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where does that leave Rails?&lt;/strong&gt; What little he said about Rails was mostly positive. While HEY is moving towards non-Ruby native apps, he said Rails remains &lt;em&gt;"particularly well positioned"&lt;/em&gt; for the web, and that its conventions &lt;a href="https://rubyweekly.com/link/190841/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;help agents write Rails apps well&lt;/a&gt;, as &lt;a href="https://rubyweekly.com/link/190842/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;recent benchmarks&lt;/a&gt; suggest.&lt;/p&gt;
&lt;p&gt;He closed with a call to remain optimistic about the changing nature of software development. Earlier, he'd said he had &lt;em&gt;"retired from being a professional programmer"&lt;/em&gt;, describing programmers' new role as &lt;em&gt;"professional makers of things"&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Initial reactions have been mixed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the YouTube comments, Stefan Lindbohm dryly noted: &lt;em&gt;"This is the most confusing funeral I've ever experienced."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Olly Headey came away &lt;a href="https://rubyweekly.com/link/190843/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;with mixed impressions&lt;/a&gt;, finding it fascinating, and mused: &lt;em&gt;"I actually think this might be the last Rails World ever, at least in the traditional conference form."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Irina Nazarova of Evil Martians 𝕏 &lt;a href="https://rubyweekly.com/link/190844/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;said&lt;/a&gt; the keynote left her &lt;em&gt;"depressed"&lt;/em&gt;, arguing &lt;em&gt;"Ruby &amp;gt; English for describing the logic"&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Hongli Lai, co-creator of &lt;em&gt;Passenger&lt;/em&gt;, 𝕏 &lt;a href="https://rubyweekly.com/link/190845/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;argued&lt;/a&gt; that developers are &lt;em&gt;"in the business of delivering user value"&lt;/em&gt; and still have plenty to do in providing vision, design, philosophy and constraints.&lt;/li&gt;
&lt;li&gt;Richard Worrall loved the keynote and, having been through &lt;em&gt;"the existential dread phase already"&lt;/em&gt;, 𝕏 &lt;a href="https://rubyweekly.com/link/190846/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;said&lt;/a&gt; he was &lt;em&gt;"ready to run through a damn wall."&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm looking forward to seeing the rest of the Rails World talks, which may show off more of the technical Ruby and Rails-specific aspects the event is known for. Fingers crossed for an epic &lt;em&gt;tenderlove&lt;/em&gt; closer!… 😅&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/818/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/818</guid>
    </item>
    <item>
      <title>Did AI agents attack RubyGems?</title>
      <link>https://rubyweekly.com/issues/817</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;#​817 — September 17, 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/190501/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/190451/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mjsvu9mg79porrbvr53z.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/190451/rss" title="rubyhack.ai" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Researchers Tie RubyGems' 'GemStuffer' Campaign to OpenAI Agents&lt;/a&gt;&lt;/span&gt; — Researchers say &lt;a href="https://rubyweekly.com/link/190452/rss" style=" color: #0055bb;   "&gt;May's RubyGems spam flood&lt;/a&gt; came from OpenAI agents that ran code on &lt;a href="https://rubyweekly.com/link/190453/rss" style=" color: #0055bb;   "&gt;RubyDoc.info&lt;/a&gt; and probed a key-leaking CDN bug. OpenAI &lt;a href="https://rubyweekly.com/link/190502/rss" style=" color: #0055bb;   "&gt;has confirmed&lt;/a&gt; its agents were involved, but describes their actions as &lt;em&gt;"benign tasks"&lt;/em&gt;, while &lt;a href="https://rubyweekly.com/link/190454/rss" style=" color: #0055bb;   "&gt;Ruby Central finds no evidence&lt;/a&gt; of successful key theft.&lt;/p&gt;
  &lt;p&gt;Kitts, Larsen, and Von Arx &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;💡 Truffle Security, which &lt;a href="https://rubyweekly.com/link/190455/rss" style=" color: #0055bb; font-weight: 600;   "&gt;disclosed the caching bug&lt;/a&gt; in July, &lt;a href="https://rubyweekly.com/link/190456/rss" style=" color: #0055bb; font-weight: 600;   "&gt;digs into the code from May that targeted it&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;a href="https://rubyweekly.com/link/190450/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/0d388685.png" width="140" height="140" 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/190450/rss" title="www.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Upgrading Rails Is Dead Simple Now. So Why Are You Behind?&lt;/a&gt;&lt;/span&gt; — Wouldn't it be easier to have Rails upgrades on autopilot? Our AI tooling plus 60,000 dev hours of upgrade experience ships them in half the time, for a fixed monthly fee. Rails 8.0 loses security support Nov 7. Our clients have peace of mind.&lt;/p&gt;
  &lt;p&gt;🌳 Bonsai by FastRuby.io &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/190457/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ractor-age Rails: A How-To Guide&lt;/a&gt;&lt;/span&gt; — A lot of work is being done to make &lt;a href="https://rubyweekly.com/link/190458/rss" style=" color: #0055bb;   "&gt;Ractors&lt;/a&gt; a practical route to true parallelism in Ruby, but making Rails &lt;em&gt;Ractor-able&lt;/em&gt; is a huge challenge. Hartley shares the patterns Shopify’s team is using to get there.&lt;/p&gt;
  &lt;p&gt;Hartley McGuire &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/190459/rss" title="www.ruby-lang.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ruby 4.0.7 Released&lt;/a&gt;&lt;/span&gt; — A routine scheduled update with &lt;a href="https://rubyweekly.com/link/190460/rss" style=" color: #0055bb;   "&gt;numerous bug fixes&lt;/a&gt;, like addressing a string corruption issue during automatic GC compaction and a YJIT perf issue when using multiple Ractors.&lt;/p&gt;
  &lt;p&gt;Takashi Kokubun (Ruby Core 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;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/190461/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.21&lt;/a&gt; add some hardening, including rejecting redirects that downgrade HTTPS to HTTP. &lt;code&gt;bundle update --bundler&lt;/code&gt; also no longer pulls in prereleases unless you ask specifically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190462/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TruffleRuby 40&lt;/a&gt; has &lt;em&gt;just&lt;/em&gt; dropped as we go to press – I'll be checking it out and featuring it next week!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/190463/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;em&gt;Agents on Rails&lt;/em&gt; Stage 2&lt;/a&gt; goes beyond Stage 1's small tasks by having models build real features for 37signals' &lt;em&gt;Fizzy&lt;/em&gt; app. GPT-6 Astra came out on top.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ruby 4.1 will let &lt;a href="https://rubyweekly.com/link/190464/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;method_defined?&lt;/code&gt; match private methods too&lt;/a&gt; using a new &lt;code&gt;include_all&lt;/code&gt; third argument, saving a second lookup that Jean Boussier found took ~1% of a big Rails app's boot time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190465/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kevin Menard is now a Ruby core committer&lt;/a&gt;, with Matz greeting the nomination with &lt;em&gt;"Sounds legit! Welcome to the core committer."&lt;/em&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/190466/rss" title="metaredux.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RuboCop 1.91: The Journey to 2.0 Begins&lt;/a&gt;&lt;/span&gt; — RuboCop's creator explains the new 'preview' mode and a shift to having fewer default cops enabled in 2.0, based on how popular Ruby projects configure it. He also has a request: &lt;em&gt;“Run &lt;code&gt;rubocop --preview&lt;/code&gt; on your codebase and tell us what you think.”&lt;/em&gt;&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;a href="https://rubyweekly.com/link/190467/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Building the Next-Generation Garbage Collector in Ruby&lt;/a&gt;&lt;/span&gt; — A RubyConf talk exploring Ruby’s modular garbage collector support and progress made on its &lt;a href="https://rubyweekly.com/link/190468/rss" style=" color: #0055bb;   "&gt;MMTk&lt;/a&gt;-based alternative.&lt;/p&gt;
  &lt;p&gt;Peter Zhu &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;💡 This is just one of the &lt;a href="https://rubyweekly.com/link/190469/rss" style=" color: #0055bb; font-weight: 600;   "&gt;many RubyConf videos&lt;/a&gt; that have landed on YouTube recently. I'll be covering more in coming weeks.&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/190470/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Switching APM? Compare AppSignal to Datadog, New Relic and Sentry&lt;/a&gt;&lt;/span&gt; — Side-by-side comparisons for Rails teams. Every feature on every plan, unlimited users, one predictable bill.&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;a href="https://rubyweekly.com/link/190471/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Porting a Ruby Discord Bot to Microsoft Teams with AI&lt;/a&gt; – A before-and-after of porting the same Ruby bot twice, by hand in 2023 and with Copilot this week (token usage and sneaky bugs included). &lt;cite&gt;Daniel Doubrovkine&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190472/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Setting Boundaries: A Type for Ranges in Rails&lt;/a&gt; &lt;cite&gt;Kushagra Singh&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190473/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Innocent Looking Ruby Can Be Dangerous&lt;/a&gt; &lt;cite&gt;Greg Molnar&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/190474/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/en0scgzlfkdshsmhbxyo.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/190474/rss" title="davidteren.github.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Mutineer: Find Code Changes Your Tests Fail to Notice&lt;/a&gt;&lt;/span&gt; — A mutation tester that changes your code (using Prism) to find weaknesses in your tests. Supports Minitest and RSpec and is guided by code coverage to only run the test files that reach the mutated code each time.&lt;/p&gt;
  &lt;p&gt;David Teren &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/190475/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/190476/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/190477/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Minitest Heat: A Way to Spot Where Test Failures Cluster&lt;/a&gt;&lt;/span&gt; — A reporter that makes it easier to identify patterns and hot spots when testing. &lt;a href="https://rubyweekly.com/link/190478/rss" style=" color: #0055bb;   "&gt;More detail and an example here.&lt;/a&gt; v2.2 supports Minitest 6 with explicit plugin activation using &lt;code&gt;Minitest.load :heat&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Garrett Dimon &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/190479/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;pg_search 2.4: Active Record Named Scopes for Postgres Full Text Search&lt;/a&gt;&lt;/span&gt; — The README is packed with examples, but the basic idea is you get a DSL to lean on Postgres’s &lt;a href="https://rubyweekly.com/link/190480/rss" style=" color: #0055bb;   "&gt;FTS&lt;/a&gt; features in Rails apps. Now requires Ruby 3.3+ and Active Record 8.0+.&lt;/p&gt;
  &lt;p&gt;CaseBook &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/190481/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Resque 3.1&lt;/a&gt; – The popular Redis-backed background job library is back with a &lt;em&gt;"Clearing the PR Queue Release"&lt;/em&gt; closing almost a decade of PRs… 😅&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190482/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Mission Control - Jobs 1.3&lt;/a&gt; – The official Rails dashboard for Solid Queue (and Resque!) now shows batches.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190483/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JWT 3.3&lt;/a&gt; – Implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190484/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;parallel_tests 5.8&lt;/a&gt; – Faster Minitest, RSpec, and more, by running in parallel on multiple cores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190485/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Amoeba 3.4&lt;/a&gt; – Easily clone Active Record objects including their associations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190486/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SimpleCov 1.3&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;You already trust Postgres for Rails. &lt;a href="https://rubyweekly.com/link/190488/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TimescaleDB&lt;/a&gt; extends it for time-series and analytics, no second database. &lt;a href="https://rubyweekly.com/link/190488/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Get $1000 credit&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;At Rails World?&lt;/a&gt; Wed 9/23, 6-8pm in Austin: Tacos at sunset with &lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;AppSignal&lt;/a&gt;. Donut tower, swag, nerdy ice breakers. &lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RSVP&lt;/a&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;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/190489/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/p6yltr8fkd09lp1y1qpo.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;&lt;a href="https://rubyweekly.com/link/190489/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Homebrew 7.0 has been released&lt;/a&gt; with the popular package manager introducing &lt;a href="https://rubyweekly.com/link/190490/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an official GUI app&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt;, built-in vulnerability checks, and other security improvements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Andrew Nesbitt looks at &lt;a href="https://rubyweekly.com/link/190491/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;which languages still let a local file 'shadow' the standard library&lt;/a&gt;, prompted by an attack on a coding agent. Luckily Ruby closed that door back in 1.9.2 (when &lt;code&gt;$:&lt;/code&gt; stopped including the current directory).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chris Coyier rounds up &lt;a href="https://rubyweekly.com/link/190492/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;new and emerging HTML features worth knowing about&lt;/a&gt;, like the &lt;code&gt;&amp;lt;geolocation&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;install&amp;gt;&lt;/code&gt; elements, as well as HTML-in-Canvas and improvements to &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; customization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I love these &lt;a href="https://rubyweekly.com/link/190493/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;pure CSS 'hand drawn' annotations&lt;/a&gt; you can add to any page. Could be a neat addition to your apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📱 Joe Masilotti says &lt;a href="https://rubyweekly.com/link/190494/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby Native apps are now running on over 100,000 devices&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&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;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/817/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/817</guid>
    </item>
    <item>
      <title>Shopify's structural linter for Ruby codebases</title>
      <link>https://rubyweekly.com/issues/816</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;#​816 — September 10, 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/190178/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/190113/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wxfjdsufnvsacb3lqxdx.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;a href="https://rubyweekly.com/link/190113/rss" style=" color: #0055bb; font-weight: 600;   "&gt;RubyKaigi's Talks&lt;/a&gt; Are Finally Online&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/190114/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyKaigi&lt;/a&gt;, the conference where Ruby's core team gathers each year, took place in Japan this April, but the talks have just made it onto YouTube with &lt;a href="https://rubyweekly.com/link/190113/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;68 videos in this playlist&lt;/a&gt;. Some highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190115/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz's "Meet Spinel" keynote&lt;/a&gt; – It's in Japanese, but the English subtitles are good. Matz covers his use of AI, what AI has helped clear from his backlog, and the &lt;a href="https://rubyweekly.com/link/190116/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt; project (including a fun live demo).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190117/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Twenty Years of JRuby&lt;/a&gt; – Charles Nutter's keynote on two decades of keeping Ruby thriving on the JVM.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190118/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Surviving Black Friday: 329 Billion Requests with Falcon&lt;/a&gt; – Falcon's author Samuel Williams and fellow Shopify engineers on running the &lt;a href="https://rubyweekly.com/link/190119/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Falcon&lt;/a&gt; high-performance web server at scale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190120/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;From C to Ruby: Porting Doom&lt;/a&gt; – Chris Hasiński on his &lt;a href="https://rubyweekly.com/link/190121/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby DOOM port&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'll link to more as I get through them. There's some great stuff here!&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;div style="   margin-top: 14px; margin-bottom: 8px;  "&gt;&lt;/div&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/190112/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b42eb770.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/190112/rss" title="judoscale.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;You Are an Expensive Babysitter&lt;/a&gt;&lt;/span&gt; — Judoscale automatically scales your job queues based on queue latency (the only reliable scaling metric), so you don't need to babysit them. It really is that easy. &lt;a href="https://rubyweekly.com/link/190112/rss" style=" color: #0055bb;   "&gt;Sign up for free and stop worrying about your job queues&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Judoscale &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/190122/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Introducing Rubydex Linter: Structural Checks for Ruby Projects&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/190123/rss" style=" color: #0055bb;   "&gt;Rubydex&lt;/a&gt;, a static analysis engine for Ruby, now has a built-in linter for cross-file, project-level structural rules, like &lt;em&gt;“no class may include both of these mixins”&lt;/em&gt;. Shopify has already used it to replace numerous long-running tests with 20+ such rules to check its whole monolith in under a minute.&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;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ractor's rules are changing: &lt;a href="https://rubyweekly.com/link/190124/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;classes and modules are now 'owned' by the Ractor that created them&lt;/a&gt;, and only that owner can modify them, replacing several 'main Ractor only' rules. Also merged: &lt;a href="https://rubyweekly.com/link/190125/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;timeout support for &lt;code&gt;Ractor.receive&lt;/code&gt; and &lt;code&gt;Ractor.select&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bozhidar Batsov has &lt;a href="https://rubyweekly.com/link/190126/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;switched off 24 style cops under RuboCop's new 'preview' mode&lt;/a&gt;, a taste of the leaner defaults planned for RuboCop 2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shopify's "$1 million over four years" &lt;em&gt;Ruby Shield&lt;/em&gt; partnership with Ruby Central has concluded. &lt;a href="https://rubyweekly.com/link/190127/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Here's a report on what it achieved&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;code&gt;rubyzip&lt;/code&gt; versions prior to 3.4.0 &lt;a href="https://rubyweekly.com/link/190128/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;contain a path traversal vulnerability&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When Sam Ruby's &lt;a href="https://rubyweekly.com/link/190116/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt;-compiled &lt;em&gt;Campfire&lt;/em&gt; wouldn't scale much beyond one core, &lt;a href="https://rubyweekly.com/link/190129/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz found a bug in Spinel's runtime&lt;/a&gt;, and that was only the &lt;em&gt;start&lt;/em&gt; of this fun story.&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/190130/rss" title="island94.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Converting a Block Interface to &lt;code&gt;start&lt;/code&gt;/&lt;code&gt;stop&lt;/code&gt; Methods with a Fiber&lt;/a&gt;&lt;/span&gt; — You might reach for a thread to handle this problem, but &lt;a href="https://rubyweekly.com/link/190131/rss" style=" color: #0055bb;   "&gt;fibers&lt;/a&gt; can get you there with less plumbing and overhead.&lt;/p&gt;
  &lt;p&gt;Ben Sheldon &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/190132/rss" title="noteflakes.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Beyond ORMs: Why Sequel's Original Creator Now Writes Plain SQL&lt;/a&gt;&lt;/span&gt; — The original creator of &lt;a href="https://rubyweekly.com/link/190133/rss" style=" color: #0055bb;   "&gt;Sequel&lt;/a&gt; (before Jeremy Evans took the reins) argues most apps only need a few dozen queries, so why use a DSL when you can write SQL queries in a per-entity ‘store’ class instead?&lt;/p&gt;
  &lt;p&gt;Sharon Rosner &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/190134/rss" style=" color: #0055bb; font-weight: 600;   "&gt;This 2009 blog interview with Jeremy Evans&lt;/a&gt; is a neat bit of history covering Sequel's maintenance handover and history generally.&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/190135/rss" title="durableprogramming.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;How Compliant is Psych? How Much Better Is libfyaml?&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/190136/rss" style=" color: #0055bb;   "&gt;Psych&lt;/a&gt;, Ruby’s YAML parser, added an experimental &lt;a href="https://rubyweekly.com/link/190137/rss" style=" color: #0055bb;   "&gt;libfyaml&lt;/a&gt; backend offering stricter YAML 1.2 support. Here’s a test-suite comparison plus a tour of Psych’s YAML edge cases.&lt;/p&gt;
  &lt;p&gt;David Berube &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/190138/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 7.2 is Already EOL; 8.0 is Nov 7. What’s Your Exposure?&lt;/a&gt;&lt;/span&gt; — We scan every image, runtime, and K8s workload for CVEs, prioritize by CISA KEV, and manage your risk. &lt;a href="https://rubyweekly.com/link/190138/rss" style=" color: #0055bb;   "&gt;Let's talk!&lt;/a&gt;&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/190139/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;One Decision Put Ruby into a Downward Spiral, and It's Not Too Late to Fix It&lt;/a&gt; – I don't agree with the conclusion, but it's an interesting read. &lt;cite&gt;Matt Solt&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190140/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Rails Deprecations You Missed This Summer&lt;/a&gt; – Eight Active Record changes bound for Rails 8.2. &lt;cite&gt;Julio Lucero&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190141/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Standardizing Exception Message Style in Ruby&lt;/a&gt; &lt;cite&gt;Daniel Doubrovkine&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190142/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Optimizing Rails DB Usage: Bullet vs. Prosopite&lt;/a&gt;  &lt;cite&gt;Spinel Cooperative&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/190143/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;json 3.0: The JSON Gem Gets a Big Clean-Up&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;JSON.load&lt;/code&gt; and &lt;code&gt;JSON.dump&lt;/code&gt; are now safe by default with the removal of &lt;code&gt;create_additions&lt;/code&gt;, plus lots of cleanup (no more global mutable defaults, which were blocking Ractor). &lt;strong&gt;However, v3.0 &lt;a href="https://rubyweekly.com/link/190144/rss" style=" color: #0055bb;   "&gt;breaks current Rails releases&lt;/a&gt;&lt;/strong&gt; so pin &lt;code&gt;json &amp;lt; 3&lt;/code&gt; for now.&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;&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/190145/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;SimpleCov 1.2: Per-Test Attribution and Production Coverage&lt;/a&gt;&lt;/span&gt; — The code coverage tool can now attribute coverage to individual tests, rerun only affected tests on save, cover views (ERB/Haml/Slim), and monitor coverage on &lt;em&gt;production&lt;/em&gt; traffic to find code that’s not getting used.&lt;/p&gt;
  &lt;p&gt;Erik Berlin &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/190146/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Monitoring That Never Stops at the Cap. No Overage Invoices&lt;/a&gt;&lt;/span&gt; — Errors, traces, Sidekiq, hosts and logs in one gem. Unlimited users, one bill. &lt;a href="https://rubyweekly.com/link/190146/rss" style=" color: #0055bb;   "&gt;30-day free trial, no 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/190147/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Grape 4.0: The Opinionated REST-like API Framework&lt;/a&gt;&lt;/span&gt; — Grape can run on Rack or be pulled into existing Rails or Sinatra apps, say, and provides a DSL specifically to build RESTful APIs. &lt;a href="https://rubyweekly.com/link/190148/rss" style=" color: #0055bb;   "&gt;v4.0&lt;/a&gt; is &lt;a href="https://rubyweekly.com/link/190149/rss" style=" color: #0055bb;   "&gt;much faster&lt;/a&gt; than before, adds HTTP &lt;code&gt;QUERY&lt;/code&gt; support, and removes deprecations.&lt;/p&gt;
  &lt;p&gt;Doubrovkine, Proulx, 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/190150/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;WhatLanguage 2.1: Natural Language Detection for 160+ Languages&lt;/a&gt;&lt;/span&gt; — No-dependency Unicode and statistics-based text language detection for strings. v2.1 improves detection for short texts and handles texts with mixed scripts better.&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;ul&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;a href="https://rubyweekly.com/link/190151/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems / Bundler 4.1 Beta 1&lt;/a&gt; is ready to try, swapping the Molinillo dependency-resolution implementation for PubGrub, adding &lt;a href="https://rubyweekly.com/link/190152/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;content-addressable gems&lt;/a&gt;, post-quantum signing, and &lt;a href="https://rubyweekly.com/link/190153/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;--cooldown&lt;/code&gt;&lt;/a&gt; overrides.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/190154/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyLLM 2.0.0 RC2&lt;/a&gt; – Here's &lt;a href="https://rubyweekly.com/link/190155/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;some of what's coming&lt;/a&gt; for the popular LLM / AI framework, including resumable agents and better support for non-text modalities like OCR, video-gen and TTS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190156/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rv 0.7&lt;/a&gt; – Ruby version/gem manager that installs precompiled Rubies in seconds.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190157/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Parallel 2.2&lt;/a&gt; – Execute code in parallel using processes, threads, or Ractors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190158/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;mruby 4.1 RC&lt;/a&gt; – Matz's lightweight, embeddable Ruby implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190159/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ruby-macho 7.0&lt;/a&gt; – Pure-Ruby library for parsing and modifying Mach-O files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190160/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Git Gem 5.4&lt;/a&gt; – Interface for interacting with Git repositories.&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/190161/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;🌮 &lt;a href="https://rubyweekly.com/link/190162/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Join AppSignal for tacos at Rails World&lt;/a&gt;. Sunset in Austin with Evil Martians, a donut tower, swag &amp;amp; nerdy ice breakers. &lt;a href="https://rubyweekly.com/link/190162/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RSVP&lt;/a&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;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/190163/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qwtnwizdp1fp8yvzwdmd.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;✨ GitHub has &lt;a href="https://rubyweekly.com/link/190164/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a new privacy-safe star history API&lt;/a&gt;. GitHub recently locked down the 'stargazer' endpoints for privacy reasons, which broke star tracking sites like &lt;a href="https://rubyweekly.com/link/190165/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Star History&lt;/a&gt; (&lt;a href="https://rubyweekly.com/link/190166/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;more background here&lt;/a&gt;). Now you can check out &lt;a href="https://rubyweekly.com/link/190163/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an example comparing three Ruby libraries&lt;/a&gt; &lt;em&gt;(shown above)&lt;/em&gt; or create your own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190167/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tailwind Labs is joining Shopify&lt;/a&gt;. &lt;em&gt;Tailwind CSS&lt;/em&gt; and their other open source projects will stay maintained and MIT-licensed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇨🇿 &lt;a href="https://rubyweekly.com/link/190168/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;EuRuKo 2026&lt;/a&gt; is next week in Brno, with Matz opening and Koichi Sasada closing. &lt;a href="https://rubyweekly.com/link/190169/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tickets&lt;/a&gt; are still available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐘 &lt;a href="https://rubyweekly.com/link/190170/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kafgres&lt;/a&gt; is a Kafka-compatible message broker that runs &lt;em&gt;inside&lt;/em&gt; Postgres. Catnip for the &lt;em&gt;"just use Postgres"&lt;/em&gt; fans who want a queue and a log in one place!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;👕 TIL you can &lt;a href="https://rubyweekly.com/link/190171/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;buy official Puma merch&lt;/a&gt; via a collaboration with &lt;em&gt;Planet Argon&lt;/em&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;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




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