<?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>41M requests/hour on Rails</title>
      <link>https://rubyweekly.com/issues/805</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;#​805 — June 18, 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/186764/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/186766/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/tz8g8niscrjlsb6gfbho.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/186766/rss" title="andre.arko.net" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;The Plan for &lt;code&gt;rv&lt;/code&gt; and a Progress Update&lt;/a&gt;&lt;/span&gt; — Inspired by Python’s &lt;code&gt;uv&lt;/code&gt;, &lt;a href="https://rubyweekly.com/link/186767/rss" style=" color: #0055bb;   "&gt;&lt;code&gt;&lt;em&gt;rv&lt;/em&gt;&lt;/code&gt;&lt;/a&gt; is a fast Ruby install, gem, and project manager built by several prominent Rubyists. &lt;a href="https://rubyweekly.com/link/186768/rss" style=" color: #0055bb;   "&gt;v0.6&lt;/a&gt; landed this week, and things are going well. This post shares some history, progress, and where the team is focusing next.&lt;/p&gt;
  &lt;p&gt;André Arko &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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;em&gt;"You can go straight from &lt;/em&gt;&lt;code&gt;brew install rv&lt;/code&gt;&lt;em&gt; to a Rails app from &lt;/em&gt;&lt;code&gt;rvx rails new&lt;/code&gt;&lt;em&gt; in 10 seconds flat."&lt;/em&gt; – André Arko&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186765/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/85e9c4f6.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/186765/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Hiring Rails Engineers Takes Months. We Start Next Week!&lt;/a&gt;&lt;/span&gt; — Since '17, teams have trusted us to upgrade Rails. The same engineers are now available for staff augmentation: shipping features, squashing bugs, and reviewing the AI-generated PRs piling up in your queue. Skip the 6-month hiring slog. &lt;a href="https://rubyweekly.com/link/186765/rss" style=" color: #0055bb;   "&gt;Let's talk&lt;/a&gt;. 🚀&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Staff Augmentation &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186769/rss" title="andyatkinson.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Scaling Rails for a Peak Load of 41M Requests/Hour&lt;/a&gt;&lt;/span&gt; — A retrospective on how a digital photo-frame service scaled its app for peak load at Christmas. As well as splitting a single primary database into eight, a mix of Rails techniques made it work: native multiple databases, &lt;code&gt;disable_joins&lt;/code&gt;, and keyset pagination.&lt;/p&gt;
  &lt;p&gt;Andrew Atkinson &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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;The Hanami folks want you to test &lt;a href="https://rubyweekly.com/link/186770/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;the Hanami 3.0 release candidate&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bogdan Gusiev &lt;a href="https://rubyweekly.com/link/186771/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;proposes adding native union types&lt;/a&gt; to Ruby.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇺🇸 &lt;a href="https://rubyweekly.com/link/186806/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rocky Mountain Ruby&lt;/a&gt; takes place in Colorado this September and &lt;a href="https://rubyweekly.com/link/186807/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;its CFP is open&lt;/a&gt; until June 30.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎤 Chris Coyier went on Robby Russell's &lt;em&gt;Maintainable Software Podcast&lt;/em&gt; to &lt;a href="https://rubyweekly.com/link/186772/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;discuss CodePen, including its migration from Rails to Go&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://rubyweekly.com/link/186773/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;net-imap&lt;/a&gt; users should update due to &lt;a href="https://rubyweekly.com/link/186774/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a variety of security issues&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186775/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Shopify has joined&lt;/a&gt; Ruby Central's new &lt;em&gt;Ruby Alliance&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186776/rss" title="baweaver.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails, The Sharp Parts: An Index Is Not a Plan&lt;/a&gt;&lt;/span&gt; — A look at seven ways a database index can go unused without you noticing and, crucially, what to do to make it work as intended.&lt;/p&gt;
  &lt;p&gt;Brandon Weaver &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186777/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;How I Think About Tests: Skips&lt;/a&gt;&lt;/span&gt; — When is skipping a test the right move, and when does it erode the signal skips are supposed to provide? A Shopify engineer shares his approach for keeping skips rare and meaningful.&lt;/p&gt;
  &lt;p&gt;Hartley McGuire &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186778/rss" title="fandf.co" style=" color: #0055bb;    font-size: 1.05em;"&gt;Depot CI Now Supports Nested Virtualization&lt;/a&gt;&lt;/span&gt; — Run Android Emulators and other nested VM workloads directly in Depot CI sandboxes. No extra config needed.&lt;/p&gt;
  &lt;p&gt;Depot &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/186779/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Exploring Automatic Buffer Management with &lt;code&gt;io_uring&lt;/code&gt;&lt;/a&gt; – An update on the io_uring based &lt;a href="https://rubyweekly.com/link/186780/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;UringMachine&lt;/a&gt; fiber-based concurrency gem. &lt;cite&gt;Sharon Rosner&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186781/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;What are Git Worktrees, and Why Should I Use Them?&lt;/a&gt; – A decade-old &lt;code&gt;git&lt;/code&gt; feature that's seen a boost in the agentic era. &lt;cite&gt;Cassidy Williams (GitHub)&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186782/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyConf 2026 is Where Ruby's Next Chapter Begins&lt;/a&gt;  &lt;cite&gt;Ruby Central&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186783/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Parallelize Your RSpec Test Suite Locally&lt;/a&gt;  &lt;cite&gt;Aysan Isayo&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186784/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Lisp's Influence on Ruby&lt;/a&gt;  &lt;cite&gt;Ian Johnson&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/186785/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qshfu5kskmach75gfmh3.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/186785/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Turbulence: Visualize Churn vs Complexity in Your Codebase&lt;/a&gt;&lt;/span&gt; — Kerri Miller has revived an old project from Chad Fowler (co-creator of RubyGems) that helps you identify prime candidates for refactoring in Ruby projects.&lt;/p&gt;
  &lt;p&gt;Chad Fowler and Kerri Miller &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/186786/rss" title="www.honeybadger.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Production Monitoring by Ruby Devs, for Ruby Devs&lt;/a&gt;&lt;/span&gt; — Our founders built Honeybadger to fix their own production headaches. &lt;a href="https://rubyweekly.com/link/186787/rss" style=" color: #0055bb;   "&gt;We think it can fix yours too →&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Honeybadger &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/186788/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Kino: A High-Perf Ractor-Based Web Server for Ruby 4.0+&lt;/a&gt;&lt;/span&gt; — A Rack 3-based server built around &lt;a href="https://rubyweekly.com/link/186789/rss" style=" color: #0055bb;   "&gt;Ractors&lt;/a&gt; with benchmarks showing huge memory savings and scaling gains versus Puma. It’s &lt;em&gt;very&lt;/em&gt; bleeding edge, though, and can only &lt;a href="https://rubyweekly.com/link/186790/rss" style=" color: #0055bb;   "&gt;serve Rails apps&lt;/a&gt; in a slower, threaded fallback mode.&lt;/p&gt;
  &lt;p&gt;Yaroslav Markin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186791/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Nandi 3.0&lt;/a&gt; – A Postgres-oriented migration tool for Rails that keeps routine-looking schema changes from taking your database down on large tables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186792/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RuboCop 1.88.0&lt;/a&gt; – Adds a new option to check and freeze mutable literals nested in arrays and hashes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186793/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;HTTPX 1.8&lt;/a&gt; – Featureful HTTP client library gains improvements to SSE and caching support. (&lt;a href="https://rubyweekly.com/link/186794/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Release notes&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186795/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JRuby 10.0.6.0&lt;/a&gt; – The Ruby 3.4-compatible JVM-based Ruby implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186796/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rubyzip 3.4&lt;/a&gt; – &lt;code&gt;.zip&lt;/code&gt; reading and writing library.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🔬 Feedback loops for agentic coding were a hot topic at RubyConf Austria. Check the &lt;a href="https://rubyweekly.com/link/186797/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;4 recipes to help your team ship without testing gaps&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;🤩  Yusuke Endoh's Obfuscated C Code&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/186808/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;IOCCC&lt;/a&gt; (International Obfuscated C Code Contest) is a competition to &lt;em&gt;"write the most obscure/obfuscated C program"&lt;/em&gt; possible within a set of rules. C, being C, makes all sorts of bizarre horrors possible, so the winning entries tend to make for interesting reading.&lt;/p&gt;
&lt;p&gt;One of the IOCCC's most successful participants is Ruby committer Yusuke Endoh, who you might know from &lt;a href="https://rubyweekly.com/link/186809/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;his Ruby-powered 'quine relay'&lt;/a&gt;, work on &lt;a href="https://rubyweekly.com/link/186810/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TypeProf&lt;/a&gt;, and experiments with &lt;a href="https://rubyweekly.com/link/186811/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;▶️ esoteric and artistic programming in Ruby&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The winning entries of IOCCC 2025 were announced recently and Yusuke won three times with &lt;a href="https://rubyweekly.com/link/186812/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;these&lt;/a&gt; &lt;a href="https://rubyweekly.com/link/186813/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;three&lt;/a&gt; &lt;a href="https://rubyweekly.com/link/186814/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;entries&lt;/a&gt;, all of which are worth checking out.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186814/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;His third entry&lt;/a&gt; (&lt;a href="https://rubyweekly.com/link/186815/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;see the code here&lt;/a&gt;), written in tribute to Perl creator Larry Wall, is a self-modifying quine chain that hides a &lt;code&gt;diff&lt;/code&gt;-style tool inside a &lt;code&gt;patch&lt;/code&gt; tool, where the tool &lt;em&gt;patches itself&lt;/em&gt; numerous times and becomes a tool that can make diffs.&lt;/p&gt;
&lt;p&gt;Excuse this slightly odd way to cap off an issue of Ruby Weekly, but as well as being fun to look at and think about, Yusuke's work is a great reminder of the human creativity still involved in coming up with novel solutions in code!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;P.S. &lt;a href="https://rubyweekly.com/link/186816/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;This 366-character emulator&lt;/a&gt; (not by Yusuke) that can run Linux and Doom is also &lt;a href="https://rubyweekly.com/link/186817/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a bit of a mind bender&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/805/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/805</guid>
    </item>
    <item>
      <title>Small PRs, big Ruby speedups</title>
      <link>https://rubyweekly.com/issues/804</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;#​804 — June 11, 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/186437/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/186439/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/tjuloeovuopl8xt7gwjy.jpg" width="640" style="    line-height: 100%;    "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📈&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/186439/rss" title="mensfeld.pl" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Small PRs, Big Speedups: The Ruby Performance Work You Almost Missed&lt;/a&gt;&lt;/span&gt; — A roundup of recent Ruby performance PRs covering strings, file handling, GC, concurrency, Prism, JITs, and more. It’s a neat snapshot of how much incremental performance work has landed in CRuby in the past year.&lt;/p&gt;
  &lt;p&gt;Maciej Mensfeld &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/186438/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b8605252.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/186438/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Stop Juggling 5 Tools to Monitor One Rails App&lt;/a&gt;&lt;/span&gt; — Errors, performance, logs, uptime, host metrics — AppSignal covers your whole Rails stack. Auto-instruments Active Record, Sidekiq, Puma, and ActionView out of the box. Request-based pricing, unlimited seats. &lt;a href="https://rubyweekly.com/link/186438/rss" style=" color: #0055bb;   "&gt;Free 30-day trial, no credit card&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186440/rss" title="rubycentral.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ruby Central Modernizes Its Bylaws (and Reshuffles Its Officers)&lt;/a&gt;&lt;/span&gt; — Ruby Central has rewritten &lt;a href="https://rubyweekly.com/link/186474/rss" style=" color: #0055bb;   "&gt;its bylaws&lt;/a&gt; &lt;em&gt;(PDF)&lt;/em&gt; to formalize participatory governance, committees, and transparency requirements. Five ‘steering committees’ will formally launch at &lt;a href="https://rubyweekly.com/link/186441/rss" style=" color: #0055bb;   "&gt;RubyConf&lt;/a&gt; next month.&lt;/p&gt;
  &lt;p&gt;Ran Craycraft (Ruby Central) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 In a further update, Ruby Central's board of directors &lt;a href="https://rubyweekly.com/link/186442/rss" style=" color: #0055bb; font-weight: 600;   "&gt;explains how community participation will actually work&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;🔒 Ruby Central has received a grant to &lt;a href="https://rubyweekly.com/link/186443/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;fund a team of Security Engineers in Residence&lt;/a&gt; to find vulnerabilities in gems and make reports.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href="https://rubyweekly.com/link/186444/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;gem.coop&lt;/a&gt; gem registry/server has officially &lt;a href="https://rubyweekly.com/link/186445/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;launched its support for namespaces&lt;/a&gt; and you can reserve your own today.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;With the release of the Ruby 3.1-compatible &lt;a href="https://rubyweekly.com/link/186446/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JRuby 9.4.15.0&lt;/a&gt;, JRuby 9.4 enters EOL (end-of-life). &lt;a href="https://rubyweekly.com/link/186447/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JRuby 10&lt;/a&gt; is the current, Ruby 4.0-targeting version.&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/186448/rss" title="bugs.ruby-lang.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Add &lt;code&gt;Proc#with_refinements&lt;/code&gt; to Ruby&lt;/a&gt;&lt;/span&gt; — Ruby’s longest serving core team member (bar Matz!) has implemented &lt;em&gt;block-level&lt;/em&gt; refinements, so extensions made to a class only take effect within a new proc returned by &lt;code&gt;with_refinements&lt;/code&gt;, with the original proc unaffected. There’s &lt;a href="https://rubyweekly.com/link/186449/rss" style=" color: #0055bb;   "&gt;a PR&lt;/a&gt; if you want to play.&lt;/p&gt;
  &lt;p&gt;Shugo Maeda &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/186450/rss" title="danielabaron.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;Beyond Mocked Payloads: End-to-End Stripe Webhook Testing&lt;/a&gt;&lt;/span&gt; — If you’re working on a Stripe-based billing system in a Ruby app, this is useful.&lt;/p&gt;
  &lt;p&gt;Daniela Baron &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186451/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 7.2: Security Support Ends Aug 9. Upgrade &amp;amp; Stay Compliant&lt;/a&gt;&lt;/span&gt; — Running EOL Rails risks HIPAA, PCI DSS, and SOC2 compliance. Map your upgrade with &lt;a href="https://rubyweekly.com/link/186452/rss" style=" color: #0055bb;   "&gt;a team that's done it 100s of times&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | 0-Downtime Upgrades &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/186453/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Beyond &lt;code&gt;Enumerable&lt;/code&gt;: Heaps and Priority Queues&lt;/a&gt;  &lt;cite&gt;Brandon Weaver&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📺 &lt;a href="https://rubyweekly.com/link/186454/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Long Polling for New Records in a Rails App&lt;/a&gt; – For when WebSockets aren’t the right solution. &lt;cite&gt;Drifting Ruby&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186455/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Leverage PurgeCSS in Your Rails App for Faster Stylesheets&lt;/a&gt;  &lt;cite&gt;Henrique Medeiros&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186456/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;When Rails Engines are the Wrong Tool&lt;/a&gt;  &lt;cite&gt;David Silva&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/186457/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mbxy64ttorzwc9x5puj8.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/186457/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails ERD 2.0: Turn Your Rails Models into a Diagram&lt;/a&gt;&lt;/span&gt; — After a few years dormant, Rails ERD is back to turn your modern Rails apps’ models into entity-relationship diagrams. Say goodbye to the complex Graphviz dependency; 2.0 uses the popular &lt;a href="https://rubyweekly.com/link/186458/rss" style=" color: #0055bb;   "&gt;Mermaid&lt;/a&gt; format (which can render directly in GitHub &lt;code&gt;README&lt;/code&gt;s).&lt;/p&gt;
  &lt;p&gt;Kerri Miller et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186459/rss" title="www.tigerdata.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;No New Migration. No New Gem. Just Faster Analytics&lt;/a&gt;&lt;/span&gt; — TimescaleDB extends Postgres. Hypertables, 95% compression, aggregates. No new migration, no new gem. &lt;a href="https://rubyweekly.com/link/186459/rss" style=" color: #0055bb;   "&gt;$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;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/186460/rss" title="paolino.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;RubyLLM 1.16: Now with Concurrent Tool Execution&lt;/a&gt;&lt;/span&gt; — 
The popular do-everything LLM library can now execute multiple tool calls concurrently, emit &lt;em&gt;ActiveSupport::Notifications&lt;/em&gt; events for observability, and support custom API endpoints for every provider.
&lt;/p&gt;
  &lt;p&gt;Carmine Paolino &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186461/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;WhatLanguage 2.0: Natural Language Detection for 160+ Languages&lt;/a&gt;&lt;/span&gt; — I first released this in 2007 to detect ~20 natural languages using a Bloom filter approach. Now it’s been reimplemented and handles many more languages via a trigram-based statistical technique.&lt;/p&gt;
  &lt;p&gt;Peter Cooper &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186462/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.14&lt;/a&gt; – Minor bugfixes for the new cooldown feature, and &lt;a href="https://rubyweekly.com/link/186463/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;executables/bins are now validated&lt;/a&gt; to have plain basenames and to stay within the gem directory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186464/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SmarterJSON 1.1&lt;/a&gt; – A lenient but fast JSON processing library designed to handle potentially messy and malformed JSON.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186465/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Lamby 7.0&lt;/a&gt; – An adapter to run Rack/Rails apps on top of AWS Lambda.&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;💘 Dyno Sniper has landed! &lt;a href="https://rubyweekly.com/link/186466/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Judoscale’s latest feature&lt;/a&gt; solves the noisy neighbor problem for good.&lt;/p&gt;
 
&lt;p&gt;Here's one for your bookmarks: ♦️ &lt;a href="https://rubyweekly.com/link/186467/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Planet Ruby&lt;/a&gt; brings together the last month of the top Ruby blogs in one place.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;EXPERIMENTAL FINDS AND SUBMISSIONS:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/186468/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;apple-foundation-models-ruby-sdk&lt;/a&gt; – Ruby bindings for Apple's Foundation Models framework so you can use the on-device Apple Intelligence model. &lt;cite&gt;Andrea Fomera&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186469/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Jo&lt;/a&gt; – A new statically-typed language with compile-time sandboxing that compiles to both Ruby and Python. &lt;cite&gt;TypeScope&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/186470/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ruby-agent&lt;/a&gt; – A minimalist instructional agentic coding harness in plain Ruby. &lt;cite&gt;Joachim Nolten&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186471/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Irb::Autosuggestions&lt;/a&gt; – Fish-like autosuggestions for &lt;code&gt;irb&lt;/code&gt;. &lt;cite&gt;unurgunite&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186472/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;http_decoy&lt;/a&gt; – A 'real fake' HTTP server for RSpec. &lt;cite&gt;Jibran Usman&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186473/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;mruby-graphviz&lt;/a&gt; – Graphviz bindings for mruby. &lt;cite&gt;gemmaro&lt;/cite&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/804/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/804</guid>
    </item>
    <item>
      <title>Bundler's new dependency cooldown feature</title>
      <link>https://rubyweekly.com/issues/803</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;#​803 — June 4, 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/186081/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/186083/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/haj3cwdrxntdfofg2xv7.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/186083/rss" title="blog.rubygems.org" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Cool Down Before You Install: Give New Gems a Few Days to Be Vetted&lt;/a&gt;&lt;/span&gt; — A compromised account can ship a malicious gem and your next &lt;code&gt;bundle install&lt;/code&gt; can pull it within minutes. &lt;a href="https://rubyweekly.com/link/186084/rss" style=" color: #0055bb;   "&gt;Bundler 4.0.13&lt;/a&gt;, released yesterday, provides an opt-in 'cooldown' to hold back releases until they've 'aged' a few days. Meanwhile, &lt;code&gt;bundle outdated&lt;/code&gt; shows what’s waiting and for how long.&lt;/p&gt;
  &lt;p&gt;Hiroshi Shibata (RubyGems) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186082/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/6665f9bd.jpg" width="146" 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/186082/rss" title="link.testdouble.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;What Is Legacy Software in the Age of AI?&lt;/a&gt;&lt;/span&gt; — Software becomes legacy by succeeding long enough to accumulate the weight of every decision and shortcut made along the way. AI creates speed, but also many unintended consequences resulting in more user friction, not less.&lt;/p&gt;
  &lt;p&gt;Test Double &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/186085/rss" title="baweaver.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Beyond &lt;code&gt;Enumerable&lt;/code&gt;: For Want of Better Windows&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;Enumerable&lt;/code&gt; gives names to most of the loops you’d otherwise hand-write, but not &lt;em&gt;all&lt;/em&gt; of them. Brandon goes after a shape it doesn't have, stateful sliding windows, and builds his own efficient implementation.&lt;/p&gt;
  &lt;p&gt;Brandon Weaver &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 I've been using Ruby for decades but still enjoy an occasional &lt;a href="https://rubyweekly.com/link/186086/rss" style=" color: #0055bb; font-weight: 600;   "&gt;browse through the &lt;code&gt;Enumerable&lt;/code&gt; docs&lt;/a&gt; as I still haven't internalized it all!&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Matz's &lt;a href="https://rubyweekly.com/link/186087/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt; Ruby AOT compiler has continued to improve over the past few weeks, adding support for &lt;code&gt;Time&lt;/code&gt;, &lt;code&gt;Rational&lt;/code&gt;/&lt;code&gt;Complex&lt;/code&gt;, keyword args, GC introspection, and initial steps towards networking and gem support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📺 &lt;a href="https://rubyweekly.com/link/186088/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The videos from &lt;em&gt;Tropical on Rails&lt;/em&gt;&lt;/a&gt;, which took place in Brazil this April, are now available on YouTube.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎂 &lt;em&gt;Shopify&lt;/em&gt;, perhaps the world's largest &lt;a href="https://rubyweekly.com/link/186089/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails monolith&lt;/a&gt;, launched 20 years ago this week.&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/186090/rss" title="mitrev.net" style=" color: #0055bb;    font-size: 1.05em;"&gt;Managing Ruby Versions with Mise&lt;/a&gt;&lt;/span&gt; — A very basic introduction, but as I’ve fallen in love with &lt;a href="https://rubyweekly.com/link/186091/rss" style=" color: #0055bb;   "&gt;Mise&lt;/a&gt; this year for managing &lt;em&gt;all&lt;/em&gt; of my languages (e.g. Go, Node, Rust) and multiple Ruby implementations (e.g. TruffleRuby and JRuby, alongside CRuby) I want it to be on everyone’s radar. It’s great!&lt;/p&gt;
  &lt;p&gt;Georgi Mitrev &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💰 37signals became &lt;a href="https://rubyweekly.com/link/186092/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Mise's first 'premier' sponsor&lt;/a&gt; this week.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186093/rss" title="katafrakt.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;What If Hanami Had Templateless Views?&lt;/a&gt;&lt;/span&gt; — It doesn’t take much to add this to Hanami, showing just how flexible the web framework can be.&lt;/p&gt;
  &lt;p&gt;Paweł Świątkowski &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/186094/rss" title="sinaptia.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;Jidoka: Automation with a Human Touch&lt;/a&gt;&lt;/span&gt; — Pair coding agents with senior engineers to modernize legacy code and ship faster with built-in quality.&lt;/p&gt;
  &lt;p&gt;JIDOKA by SINAPTIA &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186096/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How to Choose a Gem Wisely&lt;/a&gt; – The basics of dependency hygiene. &lt;cite&gt;Gelsey Torres&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/186097/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Implementing Account-Specific Rate Limits in Rails&lt;/a&gt;  &lt;cite&gt;Tejas Bubane&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/186098/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lb8kzyedutk7spsovwx8.jpg" width="640" style="        line-height: 100%;  "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186098/rss" title="railsdesigner.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Meet Mata: Live Reloading with DOM Morphing for Rack Apps&lt;/a&gt;&lt;/span&gt; — A lightweight "live reload" solution for views in Rack apps. It uses Server-Sent Events (SSE) and &lt;a href="https://rubyweekly.com/link/186099/rss" style=" color: #0055bb;   "&gt;idiomorph&lt;/a&gt; for updating the DOM. &lt;a href="https://rubyweekly.com/link/186100/rss" style=" color: #0055bb;   "&gt;GitHub repo.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Rails Designer &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;⚡ If you only need Rails, &lt;a href="https://rubyweekly.com/link/186131/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Hotwire Spark&lt;/a&gt; offers a broader live reloading approach.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/186103/rss" title="fandf.co" style=" color: #0055bb;    font-size: 1.05em;"&gt;Depot's Sherlock Can Now Analyze Your CI Builds&lt;/a&gt;&lt;/span&gt; — Ask it to break down your pipeline analytics, debug slow builds, or open a support ticket. It just works.&lt;/p&gt;
  &lt;p&gt;Depot &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/186104/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;SimpleCov 1.0 RC1: The Code Coverage Analysis Tool&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/186105/rss" style=" color: #0055bb;   "&gt;SimpleCov&lt;/a&gt; provides an effective way to use the code coverage data collected during testing by &lt;a href="https://rubyweekly.com/link/186106/rss" style=" color: #0055bb;   "&gt;Coverage&lt;/a&gt;. The changelog is a rather long list, but shows big strides forward in its config, parallel test support, and coverage for unloaded files.&lt;/p&gt;
  &lt;p&gt;Berlin, Fleischer, Matsuda, et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;🔒&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/186101/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Console1984: A More Secure, Auditable Rails Console&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;rails console&lt;/code&gt; can often come in handy in prod, but it can also provide users with a little too much power. This extension helps to protect against easy access of sensitive information and provides an audit trail for when it happens.&lt;/p&gt;
  &lt;p&gt;Basecamp &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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 2023, 37signals wrote about how they use Console1984 and other tools to &lt;a href="https://rubyweekly.com/link/186102/rss" style=" color: #0055bb; font-weight: 600;   "&gt;allow employees to navigate customer information with care.&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;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/186107/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Tmuxinator: A Tool to Manage Complex &lt;code&gt;tmux&lt;/code&gt; Sessions Easily&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/186108/rss" style=" color: #0055bb;   "&gt;tmux&lt;/a&gt; is a terminal multiplexer a lot like &lt;code&gt;screen&lt;/code&gt; but with more features (and increasingly popular in the LLM era as a way to give agents persistent, controllable terminal sessions).&lt;/p&gt;
  &lt;p&gt;Bargi and Chow &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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/186109/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Gem in a Box 3.1&lt;/a&gt; – Self-hosted gems server with push support. v3.1 deprecates the RubyGems proxy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186110/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RuboCop 1.87.0&lt;/a&gt; – Adds &lt;code&gt;--enable-all-cops&lt;/code&gt; and &lt;code&gt;--disable-all-cops&lt;/code&gt; options along with an experimental &lt;a href="https://rubyweekly.com/link/186111/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rubydex&lt;/a&gt; integration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186112/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ratomic 0.2&lt;/a&gt; – Mike Perham's library of Ractor-safe mutable data structures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;a href="https://rubyweekly.com/link/186113/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Puma 8.0.2&lt;/a&gt; and &lt;a href="https://rubyweekly.com/link/186114/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;7.2.1&lt;/a&gt; – Two security-related bugs patched.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186115/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Excon 1.5&lt;/a&gt; – Fast HTTP 1.1 client library.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/186116/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Cucumber 11.1&lt;/a&gt;, &lt;a href="https://rubyweekly.com/link/186117/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RMagick 7.0.3&lt;/a&gt;, &lt;a href="https://rubyweekly.com/link/186118/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Passenger 6.1.4&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;🔬 Shipping AI code? &lt;a href="https://rubyweekly.com/link/186119/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. Free for open source.&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/186120/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/esgf3ag3ra1bdpygf18p.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/186120/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Ruby Users Forum&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt; launched earlier this year as a venue for Rubyists to ask questions and hang out with other Rubyists. It has also become a way to get support for numerous Ruby projects, &lt;a href="https://rubyweekly.com/link/186121/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;now including Sidekiq and Faktory&lt;/a&gt;, with creator Mike Perham ready to answer your questions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;As well as being a Rubyist, Remi Mercier is also a &lt;em&gt;glass-maker&lt;/em&gt; and is &lt;a href="https://rubyweekly.com/link/186122/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;going to make a limited-edition stained glass&lt;/a&gt; to commemorate Ruby.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DHH makes the argument that &lt;a href="https://rubyweekly.com/link/186123/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;agents 'democratize open source'&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PostgreSQL 19, currently in beta, is getting built-in support for &lt;a href="https://rubyweekly.com/link/186124/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;graph style SQL/PGQ queries and traversal.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/803/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 4 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/803</guid>
    </item>
    <item>
      <title>A Unix shell powered by Ruby</title>
      <link>https://rubyweekly.com/issues/802</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;#​802 — May 28, 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/185823/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/185863/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/j0hi542o8d1whr2qevao.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/185863/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;A New Register Allocator For ZJIT&lt;/a&gt;&lt;/span&gt; — Deep-in-the-engine-room stuff, but the kind that makes Ruby faster for us all. Tenderlove’s walkthrough of &lt;a href="https://rubyweekly.com/link/185864/rss" style=" color: #0055bb;   "&gt;ZJIT&lt;/a&gt;’s new register allocator shows how processing an entire method at once lets the JIT keep more values in CPU registers and lays the groundwork for bigger optimizations to come, including method inlining.&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;a href="https://rubyweekly.com/link/185824/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/6a72b8c0.png" width="192" height="149" 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/185824/rss" title="posetteconf.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Hone Your Postgres Skills - Choose from 44 POSETTE 2026 Talks&lt;/a&gt;&lt;/span&gt; — Pick from talks about PostgreSQL-backed app development, Postgres performance, scaling, graph data, AI agents, Postgres 19 and more in the &lt;a href="https://rubyweekly.com/link/185825/rss" style=" color: #0055bb;   "&gt;Ultimate Guide to POSETTE: An Event for Postgres&lt;/a&gt;. This free &amp;amp; virtual developer event is happening 16-18 June.&lt;/p&gt;
  &lt;p&gt;Microsoft | AMD &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/185865/rss" title="janko.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Extending Ruby LSP with Prism&lt;/a&gt;&lt;/span&gt; — The author adds &lt;em&gt;‘Go To Definition’&lt;/em&gt;for &lt;code&gt;render&lt;/code&gt; calls in Rails templates via a Ruby LSP add-on, though it could be a useful starting point for any Ruby LSP extension.&lt;/p&gt;
  &lt;p&gt;Janko Marohnić &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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;Mike Perham reports on (and fixes – in &lt;a href="https://rubyweekly.com/link/185866/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;v8.1.6&lt;/a&gt;) &lt;a href="https://rubyweekly.com/link/185867/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a 'possible thread/memory leak' in Sidekiq&lt;/a&gt; on Ruby 4.0. The root cause is not yet known.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hitoshi Hasumi, the creator of &lt;a href="https://rubyweekly.com/link/185868/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;picoruby&lt;/a&gt;, &lt;a href="https://rubyweekly.com/link/185869/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;proposes adding bit operations (e.g. &lt;code&gt;bit_at&lt;/code&gt;) to &lt;code&gt;String&lt;/code&gt;&lt;/a&gt;. He already has &lt;a href="https://rubyweekly.com/link/185870/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a prototype in library form.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Ruby team is &lt;a href="https://rubyweekly.com/link/185871/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;planning to move RBS type definitions for core libraries&lt;/a&gt; from &lt;code&gt;ruby/rbs&lt;/code&gt; into &lt;code&gt;ruby/ruby&lt;/code&gt; itself.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/185872/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Bridgetown&lt;/a&gt;, the Ruby site generator, has introduced &lt;a href="https://rubyweekly.com/link/185873/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a first-party theme called &lt;em&gt;Willamette&lt;/em&gt;.&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/185874/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;24 Videos from Blue Ridge Ruby 2026&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/185875/rss" style=" color: #0055bb;   "&gt;Blue Ridge Ruby&lt;/a&gt; was a few weeks ago and the well-recorded talks are already on YouTube. Some highlights:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ifat Ribon's &lt;a href="https://rubyweekly.com/link/185876/rss" style=" color: #0055bb;   "&gt;Yes, &lt;code&gt;&amp;amp;&lt;/code&gt;…: Ruby’s Secret Talent for Improvisation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Brooke Kuhlmann's &lt;a href="https://rubyweekly.com/link/185877/rss" style=" color: #0055bb;   "&gt;Terminus: A Hanami + htmx App for E-ink Devices&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Joël Quenneville's &lt;a href="https://rubyweekly.com/link/185878/rss" style=" color: #0055bb;   "&gt;State is the First Decision You Never Made&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Kevin Murphy's &lt;a href="https://rubyweekly.com/link/185879/rss" style=" color: #0055bb;   "&gt;InstiLLMent of Successful Practices in an Agentic World&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rachael Wright Munn's &lt;a href="https://rubyweekly.com/link/185880/rss" style=" color: #0055bb;   "&gt;Your First Open-Source Contribution&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
  &lt;p&gt;Blue Ridge 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;💡 Kevin Murphy has &lt;a href="https://rubyweekly.com/link/185881/rss" style=" color: #0055bb; font-weight: 600;   "&gt;a trip report (including photos)&lt;/a&gt; of how Blue Ridge Ruby went, and &lt;a href="https://rubyweekly.com/link/185882/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Christine Seeman describes her experience&lt;/a&gt; of speaking there too.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/185826/rss" title="go.ombulabs.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;🧑‍💻 Ready to Turn your SDLC into an AI-DLC?&lt;/a&gt;&lt;/span&gt; — Custom, human-in-the-loop, Claude skills embedded across planning, QA &amp;amp; release, built with 60k hrs of Rails expertise.&lt;/p&gt;
  &lt;p&gt;Ombulabs.ai | Custom AI Solutions &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/185827/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Running Migrations &lt;em&gt;Once&lt;/em&gt; During a Multi-Host Kamal Deploy&lt;/a&gt; – Using a pre-deploy hook to prevent migration errors when multiple web containers boot at the same time. &lt;cite&gt;Anthony Drake&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/185828/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Rails 8.1's Native Markdown Rendering Support&lt;/a&gt; – Via &lt;code&gt;format.md&lt;/code&gt; and &lt;code&gt;render markdown:&lt;/code&gt; &lt;cite&gt;Amol Joshi&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/185883/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;How Rails Turns a Controller Action Into a Response&lt;/a&gt;  &lt;cite&gt;Syed Aslam&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/185830/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;My Agent Skill for Test-Driven Development&lt;/a&gt;  &lt;cite&gt;Jason Swett&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/185884/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cldmx1beaodf8nxv3q7m.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/185884/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rubish: A Unix Shell Written in Pure Ruby&lt;/a&gt;&lt;/span&gt; — A Unix shell that retains &lt;code&gt;bash&lt;/code&gt; compatibility but adds many Rubyisms like expressions for conditions, method chaining, iterator methods, and more. You can embed it into a Ruby program too. Along similar lines, older Ruby hands might remember Adam Wiggins’ &lt;a href="https://rubyweekly.com/link/185885/rss" style=" color: #0055bb;   "&gt;Rush&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Akira Matsuda (amatsuda) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/185831/rss" title="ghost.build" style=" color: #0055bb;    font-size: 1.05em;"&gt;Unlimited Postgres for Developers and Their Agents&lt;/a&gt;&lt;/span&gt; — "Databases were long-lasting infra. Now I spin one up for an afternoon and kill it when done. Feels wasteful. It's not."&lt;/p&gt;
  &lt;p&gt;Ghost &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/185848/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rouge 5.0: The Pure-Ruby Code Highlighter&lt;/a&gt;&lt;/span&gt; — A long-standing and mature solution with support for 233 languages, plus compatibility with &lt;a href="https://rubyweekly.com/link/185849/rss" style=" color: #0055bb;   "&gt;Pygments&lt;/a&gt; styles so there are tons of themes. &lt;a href="https://rubyweekly.com/link/185850/rss" style=" color: #0055bb;   "&gt;v5.0&lt;/a&gt; drops Ruby 2.7 support, fixes bugs, and adds five new lexers for Thrift, Dylan, 6502 assembly, PDF, and Veryl.&lt;/p&gt;
  &lt;p&gt;The Rouge Team &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/185832/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Discard 2.0: Soft Deletes for ActiveRecord Done Right&lt;/a&gt;&lt;/span&gt; — A mixin to add conventions for flagging records as discarded with &lt;a href="https://rubyweekly.com/link/185833/rss" style=" color: #0055bb;   "&gt;a nice API.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;John Hawthorn &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/185886/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rubyzen: A Modern Architectural Linter for Ruby&lt;/a&gt;&lt;/span&gt; — Rubyzen is an ‘architectural linter’ where you can write linting rules as RSpec tests (simpler than RuboCop’s approach). The aim is to provide architectural and structural guardrails for AI developed code.&lt;/p&gt;
  &lt;p&gt;Perry Street Software &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/185836/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;zxcvbn-ruby 2.0: A Password Strength Estimator&lt;/a&gt;&lt;/span&gt; — A Ruby port of Dropbox’s &lt;a href="https://rubyweekly.com/link/185837/rss" style=" color: #0055bb;   "&gt;zxcvbn&lt;/a&gt; JavaScript library to show users how secure their passwords are or to enforce password strength. &lt;a href="https://rubyweekly.com/link/185838/rss" style=" color: #0055bb;   "&gt;v2.0 changelog.&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;Envato &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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/185839/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Retriable 4.0&lt;/a&gt; – A DSL for retrying failed code blocks with randomized exponential backoff.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/185840/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;wasmtime-rb 45.0&lt;/a&gt; – Ruby embedding of the &lt;a href="https://rubyweekly.com/link/185841/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Wasmtime&lt;/a&gt; WebAssembly runtime.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;⏱️ &lt;a href="https://rubyweekly.com/link/185842/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Hitimes 3.2&lt;/a&gt; – Fast, high-resolution timer library for recording perf metrics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/185843/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Petite Vite Rails&lt;/a&gt; – Rails plugin that wires a Vite frontend into a Rails app.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 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;💎 &lt;a href="https://rubyweekly.com/link/185844/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Elasticsearch-quality Full-Text Search for Postgres&lt;/a&gt;, now with native ActiveRecord support.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/185845/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RailsPilot&lt;/a&gt; — Can't work through your backlog? Staff engineers with AI-augmented workflows deliver 12 production-ready features/month for $4K. First PR in 24 hours.&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/185847/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/gwlyticmd3ihosgolokk.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;📱 Joe Masilotti, the creator of &lt;a href="https://rubyweekly.com/link/185846/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby Native&lt;/a&gt; — a way to build native mobile apps with Rails — shares &lt;a href="https://rubyweekly.com/link/185847/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an update on a paid app he built with it&lt;/a&gt; that's now on both the App Store and Google Play Store.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🏆 &lt;a href="https://rubyweekly.com/link/185854/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;KaiCode&lt;/a&gt; is an annual open source 'festival' where you submit an open source project you've built (of between 1-5 years in age), all the projects get reviewed, and you could win a prize. Submissions close on June 1st.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🎉 Congratulations to &lt;a href="https://rubyweekly.com/link/185851/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;em&gt;The Bike Shed&lt;/em&gt; podcast&lt;/a&gt; (a Ruby-leaning general dev discussion podcast from &lt;a href="https://rubyweekly.com/link/185852/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;thoughtbot&lt;/a&gt;) upon &lt;a href="https://rubyweekly.com/link/185853/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;celebrating its 500th episode.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It's a JavaScript thing, but I really enjoyed &lt;a href="https://rubyweekly.com/link/185855/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;this JavaScript crossword&lt;/a&gt; this week. Can someone make a Ruby one? If not, I might have to!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;💰 Curious about the cost of running a mid-size Ruby event? &lt;a href="https://rubyweekly.com/link/185887/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyConf Austria has shared their numbers.&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🕒 If you're a Postgres user, did you realize that &lt;a href="https://rubyweekly.com/link/185856/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;now()&lt;/code&gt; doesn't necessarily return the current time&lt;/a&gt;? Somehow I didn't.&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/802/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/802</guid>
    </item>
  </channel>
</rss>
