<?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>Ruby 4.1's first preview is here</title>
      <link>https://rubyweekly.com/issues/821</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;#​821 — October 15, 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/191667/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/191620/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/unzcwumd2uagwgbxonoo.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/191620/rss" title="www.ruby-lang.org" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Ruby 4.1 Preview 1 Released&lt;/a&gt;&lt;/span&gt; — Two months out from its final release, we get a 4.1 preview to play with, complete with &lt;a href="https://rubyweekly.com/link/191621/rss" style=" color: #0055bb;   "&gt;&lt;code&gt;Module#descendants&lt;/code&gt;&lt;/a&gt;, Ractor-local GC, YJIT on Windows, and a raft of smaller changes. Worth testing to shake out the effects of things like &lt;code&gt;Symbol#to_s&lt;/code&gt; returning frozen strings and all &lt;code&gt;Regexp&lt;/code&gt; instances being frozen too.&lt;/p&gt;
  &lt;p&gt;Yui Naruse &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/191619/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/8868a1ef.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/191619/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Your Rails App Doesn’t Need a Data Warehouse&lt;/a&gt;&lt;/span&gt; — Slow Rails reports usually get a warehouse and an ETL job. Now numbers lag and you run two systems. TimescaleDB extends the Postgres your app already uses, so analytics run on live data with plain ActiveRecord. &lt;a href="https://rubyweekly.com/link/191619/rss" style=" color: #0055bb;   "&gt;Get $1000 credit to start&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &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;span&gt;📊&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/191622/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;ZJIT is Now as Fast as YJIT&lt;/a&gt;&lt;/span&gt; — Shopify is now running the &lt;a href="https://rubyweekly.com/link/191623/rss" style=" color: #0055bb;   "&gt;ZJIT compiler&lt;/a&gt; in production, where it matches or edges out YJIT on response time while using about 20% less JIT memory. Early and directional only, but a neat milestone.&lt;/p&gt;
  &lt;p&gt;Max Bernstein &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://rubyweekly.com/link/191624/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems.org now shows security warnings&lt;/a&gt; on gem version pages, with known advisories from OSV and malware labels on malicious releases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;There's a &lt;a href="https://rubyweekly.com/link/191625/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;proposal to speed up &lt;code&gt;Struct&lt;/code&gt; and &lt;code&gt;Data&lt;/code&gt;&lt;/a&gt; to narrow the performance gap with equivalent hand-written classes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191626/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;gem.coop's 2027 Gem Fellowship&lt;/a&gt; aims to fund 15 Ruby open source projects. Applications open December 1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇧🇷 &lt;a href="https://rubyweekly.com/link/191627/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tropical on Rails&lt;/a&gt; has announced its 2027 dates: March 18-19 in São Paulo.&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/191628/rss" title="blog.julik.nl" style=" color: #0055bb;    font-size: 1.05em;"&gt;Living in a Booming Time for Ruby&lt;/a&gt;&lt;/span&gt; — Responding to DHH's Rails World keynote, Julik argues that the Ruby world is in the midst of a creative boom where the community is using AI to fix things and plug gaps that have sat open for years.&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;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191629/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 8.0 Support Ends Nov 7. Upgrades on Autopilot With AI&lt;/a&gt;&lt;/span&gt; — Our AI agent ships small upgrade PRs that pass your test suite; you stay in control. Starting at $497/mo. &lt;a href="https://rubyweekly.com/link/191629/rss" style=" color: #0055bb;   "&gt;Join the beta&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | AI-native 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/191630/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Adding Custom Thor Commands to Your Rails App&lt;/a&gt; – One line in &lt;code&gt;config/boot.rb&lt;/code&gt; enables discovery of commands in &lt;code&gt;lib/commands&lt;/code&gt;. &lt;cite&gt;Ben Sheldon&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191631/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Escape LIKE Wildcards with &lt;code&gt;sanitize_sql_like&lt;/code&gt;&lt;/a&gt; – Otherwise a search for &lt;code&gt;%&lt;/code&gt; can match all rows… &lt;cite&gt;Andy Croll&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191632/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Deploying a Roundhouse App with Kamal&lt;/a&gt; – Shipping Campfire as a Spinel-compiled binary. &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/191633/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/daeyzw7xsifklukl26kq.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/191633/rss" title="metaredux.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RuboCop 1.92 Makes Agents More Welcome&lt;/a&gt;&lt;/span&gt; — There's a strong focus on making RuboCop easier for coding agents to drive, with richer JSON output, offense caps, an &lt;code&gt;--explain&lt;/code&gt; option and a better MCP server. There's a 'mountain' of autocorrection fixes to help humans too.&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;a href="https://rubyweekly.com/link/191634/rss" style=" color: #0055bb; font-weight: 600;   "&gt;RuboCop's homepage&lt;/a&gt; has also been rebuilt and now features &lt;a href="https://rubyweekly.com/link/191635/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a new playground&lt;/a&gt; &lt;em&gt;(pictured above)&lt;/em&gt; that runs RuboCop in your browser (thanks to &lt;code&gt;ruby.wasm&lt;/code&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/191636/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;The New Relic Alternative With One Price and Every Feature Included&lt;/a&gt;&lt;/span&gt; — Errors, N+1s, Sidekiq, logs and host metrics in one gem. Unlimited users, free dev-to-dev support, &lt;a href="https://rubyweekly.com/link/191636/rss" style=" color: #0055bb;   "&gt;30-day trial&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/191640/rss" title="dev.37signals.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Hot Cell 1.0: Securing Active Storage in the Age of AI&lt;/a&gt;&lt;/span&gt; — A way to run risky file processing operations in a container with no network and a read-only filesystem. Your app passes it open file handles over a Unix socket. The upcoming Rails 8.2's Active Storage can switch to using it with a config change.&lt;/p&gt;
  &lt;p&gt;Mike Dalessio (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/191637/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Iodine 0.8: A C-Powered Ruby Server Built for Long-Lived Connections&lt;/a&gt;&lt;/span&gt; — A big rewrite, with network I/O handled by a C event loop outside the GVL. Supports Rack apps, plus the author's event-driven &lt;a href="https://rubyweekly.com/link/191638/rss" style=" color: #0055bb;   "&gt;NeoRack&lt;/a&gt; API for streaming without tying up Ruby worker threads.&lt;/p&gt;
  &lt;p&gt;Boaz Segev &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/191639/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Falcon&lt;/a&gt; is another option for handling many concurrent connections that uses fibers and the &lt;code&gt;async&lt;/code&gt; gem, and supports HTTP/2.&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/191641/rss" title="roberthopman.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;scrap4rb: Find the Messy Tests in a Ruby Project&lt;/a&gt;&lt;/span&gt; — A small tool, based on Uncle Bob's &lt;a href="https://rubyweekly.com/link/191642/rss" style=" color: #0055bb;   "&gt;SCRAP&lt;/a&gt;, that scores Minitest tests for smells like missing assertions, heavy mocking and hidden helper work, then gives one piece of advice per file.&lt;/p&gt;
  &lt;p&gt;Robert Hopman &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/191643/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RailsPreFlight 0.1&lt;/a&gt; – Reads a Rails app and tells you what stands between it and the Rails version you want.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191644/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;sqlite3-ruby 2.10&lt;/a&gt; – Ruby's SQLite bindings. Now bundles &lt;a href="https://rubyweekly.com/link/191645/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SQLite 3.54.0&lt;/a&gt; and adds &lt;code&gt;Database#serialize&lt;/code&gt; and &lt;code&gt;#deserialize&lt;/code&gt; to return or populate a database with a binary string.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191646/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Bullet 8.3&lt;/a&gt; – Detects N+1 queries and unused eager loading. Now supports the upcoming Active Record 8.2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191647/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Errors 0.8&lt;/a&gt; – Self-hosted, database-backed error tracker for Rails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191648/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Cucumber 12.0&lt;/a&gt; – The plain-language BDD test tool.&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;Cut your Ruby CI times in half. &lt;a href="https://rubyweekly.com/link/191649/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;WarpBuild&lt;/a&gt; runs GitHub Actions twice as fast at half the cost. &lt;a href="https://rubyweekly.com/link/191649/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Get $50 in free credits&lt;/a&gt; with code &lt;code&gt;START50&lt;/code&gt;.&lt;/p&gt;
 
&lt;p&gt;Keep up to date with key releases in numerous tagged programming language ecosystems with the &lt;a href="https://rubyweekly.com/link/191650/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;GitHub Release Tracker&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/191651/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/uvwyrqs3eqxpieis3nz1.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/191651/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RedGem&lt;/a&gt; is an experimental 3D game engine, with its own editor, where you write the gameplay in Ruby (via mruby). Exports games for Linux, Windows and Android. (&lt;a href="https://rubyweekly.com/link/191652/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;GitHub repo&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 Trail of Bits &lt;a href="https://rubyweekly.com/link/191653/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;tested whether 25 package managers notice a malicious repository tampering with packages&lt;/a&gt;. Bundler passes if your &lt;code&gt;Gemfile.lock&lt;/code&gt; has a &lt;code&gt;CHECKSUMS&lt;/code&gt; section (the default for new lockfiles since Bundler 4), but plain &lt;code&gt;gem install&lt;/code&gt; has nothing to check against.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 If you want something like Claude Code/Codex but independent, open and supporting a wider range of models, &lt;a href="https://rubyweekly.com/link/191654/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;OpenCode 2.0&lt;/a&gt; is a great option – you can &lt;a href="https://rubyweekly.com/link/191655/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;get started here&lt;/a&gt;. &lt;a href="https://rubyweekly.com/link/191656/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Pi&lt;/a&gt; is also good if you want something minimal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lea Verou shows off &lt;a href="https://rubyweekly.com/link/191657/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a neat way to use icons in web UIs&lt;/a&gt; and do &lt;em&gt;all&lt;/em&gt; the inserting and tweaking with CSS with no HTML involved.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ryan Bigg, author of &lt;a href="https://rubyweekly.com/link/191658/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;several Rails books&lt;/a&gt; and &lt;a href="https://rubyweekly.com/link/191659/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails contributor&lt;/a&gt;, is &lt;a href="https://rubyweekly.com/link/191660/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;stepping away from tech&lt;/a&gt; after a wave of job rejections.&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/821/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/821</guid>
    </item>
    <item>
      <title>Making a case for real macros in Ruby</title>
      <link>https://rubyweekly.com/issues/820</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;#​820 — October 8, 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/191357/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/191309/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/nufqhhqpmvoptuwylfhw.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/191309/rss" title="dev.37signals.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Warming Up the Puma Master Before It Forks&lt;/a&gt;&lt;/span&gt; — Using Puma with &lt;code&gt;preload_app!&lt;/code&gt;? Your workers still start cold, each compiling templates and YJIT code on live traffic. This post covers Basecamp's fix of running real requests in the parent process before forking, giving workers a warm app.&lt;/p&gt;
  &lt;p&gt;Lewis Buckley (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;a href="https://rubyweekly.com/link/191308/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/86eaada6.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/191308/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🤖 Ready for AI-Native Rails Modernization?&lt;/a&gt;&lt;/span&gt; — 🚨 Rails 8.0 EOL Nov 7. Our AI agents upgrade your app on your CI runners. PRs open only when your test suite passes. You review and merge. No quiet test deletions. Join the private-beta waitlist to lock in beta pricing from $497/mo.&lt;/p&gt;
  &lt;p&gt;FastRuby.io | AI-native 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;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191310/rss" title="www.theregister.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Originator Roasted Over Rust Boosterism&lt;/a&gt;&lt;/span&gt; — An update on DHH's dabbling with other languages, this time porting &lt;a href="https://rubyweekly.com/link/191311/rss" style=" color: #0055bb;   "&gt;Campfire&lt;/a&gt; to Elixir, Go, and Rust. The benchmarks didn't pass muster on social media, but DHH is &lt;a href="https://rubyweekly.com/link/191312/rss" style=" color: #0055bb;   "&gt;working on that.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Joab Jackson (The Register) &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, Tobi Lütke is sticking with Ruby with his experimental &lt;a href="https://rubyweekly.com/link/191313/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Rails-free Ruby &amp;amp; Ractors port of Campfire&lt;/a&gt; which gets &lt;a href="https://rubyweekly.com/link/191314/rss" style=" color: #0055bb; font-weight: 600;   "&gt;15-27x throughput vs. the Rails version&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;We learnt from &lt;a href="https://rubyweekly.com/link/191315/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;yesterday's core dev meeting&lt;/a&gt; that Ruby 4.1's first preview release is imminent. The final usually lands on Christmas Day.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 All the talks from &lt;em&gt;Rails World 2026&lt;/em&gt; &lt;a href="https://rubyweekly.com/link/191316/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;are now on YouTube&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191317/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;YJIT now works on Windows&lt;/a&gt; builds made with Visual C++ (mswin, not MinGW). Part of a broader effort for Ruby to &lt;a href="https://rubyweekly.com/link/191318/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;provide official Windows binary packages again&lt;/a&gt; (which it stopped doing after Ruby 1.9).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191319/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz has accepted&lt;/a&gt; &lt;code&gt;parents:&lt;/code&gt; for &lt;code&gt;Dir.mkdir&lt;/code&gt; and &lt;code&gt;recursive:&lt;/code&gt; for &lt;code&gt;File.unlink&lt;/code&gt;, so &lt;code&gt;mkdir -p&lt;/code&gt; and &lt;code&gt;rm -r&lt;/code&gt; can work without &lt;a href="https://rubyweekly.com/link/191320/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;FileUtils&lt;/a&gt;. The implementation is yet to follow, however.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;Class.allocate&lt;/code&gt; is &lt;a href="https://rubyweekly.com/link/191321/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;going away&lt;/a&gt;. Matz has approved making it raise, as &lt;code&gt;Proc.allocate&lt;/code&gt; already does, since an uninitialized class has no use.&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/191322/rss" title="noteflakes.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Unrolled Code (and a Case for Real Macros in Ruby)&lt;/a&gt;&lt;/span&gt; — A thoughtful proposal for Elixir-style &lt;code&gt;quote&lt;/code&gt;/&lt;code&gt;unquote&lt;/code&gt; macros, so you could generate fast, specialized code from ASTs rather than strings.&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;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/191323/rss" title="evilmartians.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Don't Bet on &lt;code&gt;SELECT&lt;/code&gt; Order: Shuffle Your Rows and See What Folds&lt;/a&gt;&lt;/span&gt; — Your tests may assume rows come back in insertion order, but Rails 8.2's &lt;code&gt;shuffle_unordered_selects&lt;/code&gt; option will challenge that assumption, as will the &lt;a href="https://rubyweekly.com/link/191324/rss" style=" color: #0055bb;   "&gt;pg_disorder&lt;/a&gt; Postgres extension but at the database level. This approach has already surfaced &lt;a href="https://rubyweekly.com/link/191325/rss" style=" color: #0055bb;   "&gt;a bug&lt;/a&gt; in Rails.&lt;/p&gt;
  &lt;p&gt;Yaroslav Kurbatov (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/191326/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Keep Rails on Postgres. Even for Analytics&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends the Postgres behind your Rails app so analytics stay fast. Same ActiveRecord. &lt;a href="https://rubyweekly.com/link/191326/rss" style=" color: #0055bb;   "&gt;Get $1000 credit&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Tiger Data (creators of TimescaleDB) &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/191327/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ruby-lean: A Ruby Semantics with a Type Soundness Proof&lt;/a&gt; – An executable model of Ruby in Lean 4, built with heavy LLM help. &lt;cite&gt;Sam Xifaras&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/191328/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;What &lt;code&gt;retry_on&lt;/code&gt; Actually Means&lt;/a&gt; – Tracing what &lt;code&gt;retry_on&lt;/code&gt; repeats and when retries go missing, with a repro. &lt;cite&gt;Syed Aslam&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/191329/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Run the Rails Agent Benchmark Yourself&lt;/a&gt;  &lt;cite&gt;Henrique Medeiros&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; 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/191330/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RubyLLM 2.1 Adds MCP, Agent Evals and OpenTelemetry Tracing&lt;/a&gt;&lt;/span&gt; — The popular Ruby LLM library adds a built-in MCP client, &lt;code&gt;RubyLLM::Judge&lt;/code&gt; for typed classification-style questions (&lt;a href="https://rubyweekly.com/link/191331/rss" style=" color: #0055bb;   "&gt;Jev&lt;/a&gt;, anyone?), and an agent eval framework with RSpec/Minitest hooks.&lt;/p&gt;
  &lt;p&gt;Carmine Paolino &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 There's also &lt;a href="https://rubyweekly.com/link/191332/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a thorough, practical guide&lt;/a&gt; to using all the new features.&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/191333/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rutie 0.14: A Way to Bring Ruby and Rust Together&lt;/a&gt;&lt;/span&gt; — Write Ruby extensions in Rust, or embed Ruby in a Rust app. We last linked to this six years ago, but it’s been revived to support Ruby 4.0 and a larger portion of Ruby’s C API.&lt;/p&gt;
  &lt;p&gt;Daniel P. Clark &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/191334/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Paying Per Seat for New Relic? AppSignal Includes Unlimited Users&lt;/a&gt;&lt;/span&gt; — Flat request-based pricing, free support from real engineers, and every feature on every plan. &lt;a href="https://rubyweekly.com/link/191334/rss" style=" color: #0055bb;   "&gt;Free 30-day trial&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;span&gt;✋&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/191335/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;exhale: A CI Gate for Duplication and Complexity in Rails Apps&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;exhale dry&lt;/code&gt; flags duplicated Ruby and ERB code, while &lt;code&gt;exhale complexity&lt;/code&gt; &lt;a href="https://rubyweekly.com/link/191336/rss" style=" color: #0055bb;   "&gt;scores methods and DSL calls&lt;/a&gt; before and after a PR and fails only when one gets harder to follow, so existing code passes until someone makes it &lt;em&gt;worse&lt;/em&gt;.&lt;/p&gt;
  &lt;p&gt;Obie Fernandez &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/191337/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;toml-rb 6.0: A Fast, Dependency-Free TOML Parser Library&lt;/a&gt;&lt;/span&gt; — The gem for reading and writing &lt;a href="https://rubyweekly.com/link/191338/rss" style=" color: #0055bb;   "&gt;TOML&lt;/a&gt; config files (think &lt;code&gt;Cargo.toml&lt;/code&gt;) is now dependency-free &lt;em&gt;and&lt;/em&gt; dramatically faster.&lt;/p&gt;
  &lt;p&gt;Emiliano Mancuso &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/191339/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Dalli 5.2.2&lt;/a&gt; – The popular memcached client has fixed six security issues. &lt;a href="https://rubyweekly.com/link/191340/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Two high-severity bugs&lt;/a&gt; can return another key's cached value. v5.1.4, 5.0.10, 4.3.7 and 3.2.13 are also fixed if you're on those lines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191341/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.1.0 Beta 2&lt;/a&gt; – Now supports &lt;a href="https://rubyweekly.com/link/191342/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;content-addressable gem&lt;/a&gt; builds, plus setuid, setgid and sticky bits are now dropped on extraction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191343/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Active Record Doctor 2.1&lt;/a&gt; – A long-standing way to identify database-related issues before they reach production.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191344/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;kamal-backup 1.1&lt;/a&gt; – Scheduled Rails backups as a single Kamal accessory. A new &lt;code&gt;dump&lt;/code&gt; command downloads one database dump without a full restore.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191345/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Reek 6.6&lt;/a&gt; – A modernization release of the 18-year-old 'code smell' detector.&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;Who decides what gets built to last—or paved over? We all do. Join us in Barcelona for &lt;a href="https://rubyweekly.com/link/191346/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Mozilla Festival&lt;/a&gt;, Oct. 28-30. &lt;a href="https://rubyweekly.com/link/191346/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;📢  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/191347/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/yxhoixcxvvzvjuykdvgk.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;TIL that a paperback copy of &lt;em&gt;why's (poignant) Guide to Ruby&lt;/em&gt; is &lt;a href="https://rubyweekly.com/link/191347/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;travelling between Ruby events as a guest book&lt;/a&gt;. Matz wrote &lt;em&gt;"He started a movement. I miss you, why!"&lt;/em&gt; on its title page, and Eileen Uchitelle, Jeremy Evans, Charles Nutter, Sarah Mei, Xavier Noria and Nate Berkopec have all left notes too!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🕹️ &lt;a href="https://rubyweekly.com/link/191348/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rai*bert&lt;/a&gt; is a 20-level Q*bert-style arcade game built with Ruby and Gosu. You can also &lt;a href="https://rubyweekly.com/link/191349/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;play it in your browser&lt;/a&gt; thanks to WebAssembly.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/191350/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rich-ri&lt;/a&gt; is like &lt;code&gt;ri&lt;/code&gt; for reading Ruby's docs in the terminal, but with syntax highlighting and shell completion.&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/820/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 8 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/820</guid>
    </item>
    <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>
  </channel>
</rss>
