<?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>Did AI agents attack RubyGems?</title>
      <link>https://rubyweekly.com/issues/817</link>
      <description>

  

    
    
    
  




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

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

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190451/rss" title="rubyhack.ai" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;Researchers Tie RubyGems' 'GemStuffer' Campaign to OpenAI Agents&lt;/a&gt;&lt;/span&gt; — Researchers say &lt;a href="https://rubyweekly.com/link/190452/rss" style=" color: #0055bb;   "&gt;May's RubyGems spam flood&lt;/a&gt; came from OpenAI agents that ran code on &lt;a href="https://rubyweekly.com/link/190453/rss" style=" color: #0055bb;   "&gt;RubyDoc.info&lt;/a&gt; and probed a key-leaking CDN bug. OpenAI &lt;a href="https://rubyweekly.com/link/190502/rss" style=" color: #0055bb;   "&gt;has confirmed&lt;/a&gt; its agents were involved, but describes their actions as &lt;em&gt;"benign tasks"&lt;/em&gt;, while &lt;a href="https://rubyweekly.com/link/190454/rss" style=" color: #0055bb;   "&gt;Ruby Central finds no evidence&lt;/a&gt; of successful key theft.&lt;/p&gt;
  &lt;p&gt;Kitts, Larsen, and Von Arx &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 Truffle Security, which &lt;a href="https://rubyweekly.com/link/190455/rss" style=" color: #0055bb; font-weight: 600;   "&gt;disclosed the caching bug&lt;/a&gt; in July, &lt;a href="https://rubyweekly.com/link/190456/rss" style=" color: #0055bb; font-weight: 600;   "&gt;digs into the code from May that targeted it&lt;/a&gt;.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/190450/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/0d388685.png" width="140" height="140" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190450/rss" title="www.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Upgrading Rails Is Dead Simple Now. So Why Are You Behind?&lt;/a&gt;&lt;/span&gt; — Wouldn't it be easier to have Rails upgrades on autopilot? Our AI tooling plus 60,000 dev hours of upgrade experience ships them in half the time, for a fixed monthly fee. Rails 8.0 loses security support Nov 7. Our clients have peace of mind.&lt;/p&gt;
  &lt;p&gt;🌳 Bonsai by FastRuby.io &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190457/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ractor-age Rails: A How-To Guide&lt;/a&gt;&lt;/span&gt; — A lot of work is being done to make &lt;a href="https://rubyweekly.com/link/190458/rss" style=" color: #0055bb;   "&gt;Ractors&lt;/a&gt; a practical route to true parallelism in Ruby, but making Rails &lt;em&gt;Ractor-able&lt;/em&gt; is a huge challenge. Hartley shares the patterns Shopify’s team is using to get there.&lt;/p&gt;
  &lt;p&gt;Hartley McGuire &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190459/rss" title="www.ruby-lang.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ruby 4.0.7 Released&lt;/a&gt;&lt;/span&gt; — A routine scheduled update with &lt;a href="https://rubyweekly.com/link/190460/rss" style=" color: #0055bb;   "&gt;numerous bug fixes&lt;/a&gt;, like addressing a string corruption issue during automatic GC compaction and a YJIT perf issue when using multiple Ractors.&lt;/p&gt;
  &lt;p&gt;Takashi Kokubun (Ruby Core Team) &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190461/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.21&lt;/a&gt; add some hardening, including rejecting redirects that downgrade HTTPS to HTTP. &lt;code&gt;bundle update --bundler&lt;/code&gt; also no longer pulls in prereleases unless you ask specifically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190462/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TruffleRuby 40&lt;/a&gt; has &lt;em&gt;just&lt;/em&gt; dropped as we go to press – I'll be checking it out and featuring it next week!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/190463/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;em&gt;Agents on Rails&lt;/em&gt; Stage 2&lt;/a&gt; goes beyond Stage 1's small tasks by having models build real features for 37signals' &lt;em&gt;Fizzy&lt;/em&gt; app. GPT-6 Astra came out on top.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ruby 4.1 will let &lt;a href="https://rubyweekly.com/link/190464/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;method_defined?&lt;/code&gt; match private methods too&lt;/a&gt; using a new &lt;code&gt;include_all&lt;/code&gt; third argument, saving a second lookup that Jean Boussier found took ~1% of a big Rails app's boot time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190465/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kevin Menard is now a Ruby core committer&lt;/a&gt;, with Matz greeting the nomination with &lt;em&gt;"Sounds legit! Welcome to the core committer."&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190466/rss" title="metaredux.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;RuboCop 1.91: The Journey to 2.0 Begins&lt;/a&gt;&lt;/span&gt; — RuboCop's creator explains the new 'preview' mode and a shift to having fewer default cops enabled in 2.0, based on how popular Ruby projects configure it. He also has a request: &lt;em&gt;“Run &lt;code&gt;rubocop --preview&lt;/code&gt; on your codebase and tell us what you think.”&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Bozhidar Batsov &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;▶  &lt;a href="https://rubyweekly.com/link/190467/rss" title="www.youtube.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Building the Next-Generation Garbage Collector in Ruby&lt;/a&gt;&lt;/span&gt; — A RubyConf talk exploring Ruby’s modular garbage collector support and progress made on its &lt;a href="https://rubyweekly.com/link/190468/rss" style=" color: #0055bb;   "&gt;MMTk&lt;/a&gt;-based alternative.&lt;/p&gt;
  &lt;p&gt;Peter Zhu &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 This is just one of the &lt;a href="https://rubyweekly.com/link/190469/rss" style=" color: #0055bb; font-weight: 600;   "&gt;many RubyConf videos&lt;/a&gt; that have landed on YouTube recently. I'll be covering more in coming weeks.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190470/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Switching APM? Compare AppSignal to Datadog, New Relic and Sentry&lt;/a&gt;&lt;/span&gt; — Side-by-side comparisons for Rails teams. Every feature on every plan, unlimited users, one predictable bill.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190471/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Porting a Ruby Discord Bot to Microsoft Teams with AI&lt;/a&gt; – A before-and-after of porting the same Ruby bot twice, by hand in 2023 and with Copilot this week (token usage and sneaky bugs included). &lt;cite&gt;Daniel Doubrovkine&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190472/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Setting Boundaries: A Type for Ranges in Rails&lt;/a&gt; &lt;cite&gt;Kushagra Singh&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190473/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Innocent Looking Ruby Can Be Dangerous&lt;/a&gt; &lt;cite&gt;Greg Molnar&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/190474/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/en0scgzlfkdshsmhbxyo.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190474/rss" title="davidteren.github.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;Mutineer: Find Code Changes Your Tests Fail to Notice&lt;/a&gt;&lt;/span&gt; — A mutation tester that changes your code (using Prism) to find weaknesses in your tests. Supports Minitest and RSpec and is guided by code coverage to only run the test files that reach the mutated code each time.&lt;/p&gt;
  &lt;p&gt;David Teren &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

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

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190477/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Minitest Heat: A Way to Spot Where Test Failures Cluster&lt;/a&gt;&lt;/span&gt; — A reporter that makes it easier to identify patterns and hot spots when testing. &lt;a href="https://rubyweekly.com/link/190478/rss" style=" color: #0055bb;   "&gt;More detail and an example here.&lt;/a&gt; v2.2 supports Minitest 6 with explicit plugin activation using &lt;code&gt;Minitest.load :heat&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;Garrett Dimon &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190479/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;pg_search 2.4: Active Record Named Scopes for Postgres Full Text Search&lt;/a&gt;&lt;/span&gt; — The README is packed with examples, but the basic idea is you get a DSL to lean on Postgres’s &lt;a href="https://rubyweekly.com/link/190480/rss" style=" color: #0055bb;   "&gt;FTS&lt;/a&gt; features in Rails apps. Now requires Ruby 3.3+ and Active Record 8.0+.&lt;/p&gt;
  &lt;p&gt;CaseBook &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190481/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Resque 3.1&lt;/a&gt; – The popular Redis-backed background job library is back with a &lt;em&gt;"Clearing the PR Queue Release"&lt;/em&gt; closing almost a decade of PRs… 😅&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190482/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Mission Control - Jobs 1.3&lt;/a&gt; – The official Rails dashboard for Solid Queue (and Resque!) now shows batches.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190483/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;JWT 3.3&lt;/a&gt; – Implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190484/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;parallel_tests 5.8&lt;/a&gt; – Faster Minitest, RSpec, and more, by running in parallel on multiple cores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190485/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Amoeba 3.4&lt;/a&gt; – Easily clone Active Record objects including their associations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190486/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;SimpleCov 1.3&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;You already trust Postgres for Rails. &lt;a href="https://rubyweekly.com/link/190488/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TimescaleDB&lt;/a&gt; extends it for time-series and analytics, no second database. &lt;a href="https://rubyweekly.com/link/190488/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Get $1000 credit&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;At Rails World?&lt;/a&gt; Wed 9/23, 6-8pm in Austin: Tacos at sunset with &lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;AppSignal&lt;/a&gt;. Donut tower, swag, nerdy ice breakers. &lt;a href="https://rubyweekly.com/link/190487/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RSVP&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/190489/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/p6yltr8fkd09lp1y1qpo.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190489/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Homebrew 7.0 has been released&lt;/a&gt; with the popular package manager introducing &lt;a href="https://rubyweekly.com/link/190490/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an official GUI app&lt;/a&gt; &lt;em&gt;(above)&lt;/em&gt;, built-in vulnerability checks, and other security improvements.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Andrew Nesbitt looks at &lt;a href="https://rubyweekly.com/link/190491/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;which languages still let a local file 'shadow' the standard library&lt;/a&gt;, prompted by an attack on a coding agent. Luckily Ruby closed that door back in 1.9.2 (when &lt;code&gt;$:&lt;/code&gt; stopped including the current directory).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chris Coyier rounds up &lt;a href="https://rubyweekly.com/link/190492/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;new and emerging HTML features worth knowing about&lt;/a&gt;, like the &lt;code&gt;&amp;lt;geolocation&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;install&amp;gt;&lt;/code&gt; elements, as well as HTML-in-Canvas and improvements to &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; customization.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I love these &lt;a href="https://rubyweekly.com/link/190493/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;pure CSS 'hand drawn' annotations&lt;/a&gt; you can add to any page. Could be a neat addition to your apps.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;📱 Joe Masilotti says &lt;a href="https://rubyweekly.com/link/190494/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby Native apps are now running on over 100,000 devices&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/817/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/817</guid>
    </item>
    <item>
      <title>Shopify's structural linter for Ruby codebases</title>
      <link>https://rubyweekly.com/issues/816</link>
      <description>

  

    
    
    
  




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

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

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190113/rss" style=" color: #0055bb; font-weight: 600;   "&gt;RubyKaigi's Talks&lt;/a&gt; Are Finally Online&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190114/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyKaigi&lt;/a&gt;, the conference where Ruby's core team gathers each year, took place in Japan this April, but the talks have just made it onto YouTube with &lt;a href="https://rubyweekly.com/link/190113/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;68 videos in this playlist&lt;/a&gt;. Some highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190115/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz's "Meet Spinel" keynote&lt;/a&gt; – It's in Japanese, but the English subtitles are good. Matz covers his use of AI, what AI has helped clear from his backlog, and the &lt;a href="https://rubyweekly.com/link/190116/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt; project (including a fun live demo).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190117/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Twenty Years of JRuby&lt;/a&gt; – Charles Nutter's keynote on two decades of keeping Ruby thriving on the JVM.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190118/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Surviving Black Friday: 329 Billion Requests with Falcon&lt;/a&gt; – Falcon's author Samuel Williams and fellow Shopify engineers on running the &lt;a href="https://rubyweekly.com/link/190119/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Falcon&lt;/a&gt; high-performance web server at scale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;▶️ &lt;a href="https://rubyweekly.com/link/190120/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;From C to Ruby: Porting Doom&lt;/a&gt; – Chris Hasiński on his &lt;a href="https://rubyweekly.com/link/190121/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Ruby DOOM port&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'll link to more as I get through them. There's some great stuff here!&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;div style="   margin-top: 14px; margin-bottom: 8px;  "&gt;&lt;/div&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  &lt;a href="https://rubyweekly.com/link/190112/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b42eb770.png" width="110" height="110" style="padding-top: 12px; padding-left: 12px;     line-height: 100%; "&gt;&lt;/a&gt;
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190112/rss" title="judoscale.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;You Are an Expensive Babysitter&lt;/a&gt;&lt;/span&gt; — Judoscale automatically scales your job queues based on queue latency (the only reliable scaling metric), so you don't need to babysit them. It really is that easy. &lt;a href="https://rubyweekly.com/link/190112/rss" style=" color: #0055bb;   "&gt;Sign up for free and stop worrying about your job queues&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;Judoscale &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190122/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Introducing Rubydex Linter: Structural Checks for Ruby Projects&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/190123/rss" style=" color: #0055bb;   "&gt;Rubydex&lt;/a&gt;, a static analysis engine for Ruby, now has a built-in linter for cross-file, project-level structural rules, like &lt;em&gt;“no class may include both of these mixins”&lt;/em&gt;. Shopify has already used it to replace numerous long-running tests with 20+ such rules to check its whole monolith in under a minute.&lt;/p&gt;
  &lt;p&gt;Stan Lo &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;&lt;strong&gt;⚡️ IN BRIEF:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ractor's rules are changing: &lt;a href="https://rubyweekly.com/link/190124/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;classes and modules are now 'owned' by the Ractor that created them&lt;/a&gt;, and only that owner can modify them, replacing several 'main Ractor only' rules. Also merged: &lt;a href="https://rubyweekly.com/link/190125/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;timeout support for &lt;code&gt;Ractor.receive&lt;/code&gt; and &lt;code&gt;Ractor.select&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bozhidar Batsov has &lt;a href="https://rubyweekly.com/link/190126/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;switched off 24 style cops under RuboCop's new 'preview' mode&lt;/a&gt;, a taste of the leaner defaults planned for RuboCop 2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Shopify's "$1 million over four years" &lt;em&gt;Ruby Shield&lt;/em&gt; partnership with Ruby Central has concluded. &lt;a href="https://rubyweekly.com/link/190127/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Here's a report on what it achieved&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔒 &lt;code&gt;rubyzip&lt;/code&gt; versions prior to 3.4.0 &lt;a href="https://rubyweekly.com/link/190128/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;contain a path traversal vulnerability&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When Sam Ruby's &lt;a href="https://rubyweekly.com/link/190116/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Spinel&lt;/a&gt;-compiled &lt;em&gt;Campfire&lt;/em&gt; wouldn't scale much beyond one core, &lt;a href="https://rubyweekly.com/link/190129/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Matz found a bug in Spinel's runtime&lt;/a&gt;, and that was only the &lt;em&gt;start&lt;/em&gt; of this fun story.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190130/rss" title="island94.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Converting a Block Interface to &lt;code&gt;start&lt;/code&gt;/&lt;code&gt;stop&lt;/code&gt; Methods with a Fiber&lt;/a&gt;&lt;/span&gt; — You might reach for a thread to handle this problem, but &lt;a href="https://rubyweekly.com/link/190131/rss" style=" color: #0055bb;   "&gt;fibers&lt;/a&gt; can get you there with less plumbing and overhead.&lt;/p&gt;
  &lt;p&gt;Ben Sheldon &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190132/rss" title="noteflakes.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Beyond ORMs: Why Sequel's Original Creator Now Writes Plain SQL&lt;/a&gt;&lt;/span&gt; — The original creator of &lt;a href="https://rubyweekly.com/link/190133/rss" style=" color: #0055bb;   "&gt;Sequel&lt;/a&gt; (before Jeremy Evans took the reins) argues most apps only need a few dozen queries, so why use a DSL when you can write SQL queries in a per-entity ‘store’ class instead?&lt;/p&gt;
  &lt;p&gt;Sharon Rosner &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 &lt;a href="https://rubyweekly.com/link/190134/rss" style=" color: #0055bb; font-weight: 600;   "&gt;This 2009 blog interview with Jeremy Evans&lt;/a&gt; is a neat bit of history covering Sequel's maintenance handover and history generally.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190135/rss" title="durableprogramming.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;How Compliant is Psych? How Much Better Is libfyaml?&lt;/a&gt;&lt;/span&gt; — &lt;a href="https://rubyweekly.com/link/190136/rss" style=" color: #0055bb;   "&gt;Psych&lt;/a&gt;, Ruby’s YAML parser, added an experimental &lt;a href="https://rubyweekly.com/link/190137/rss" style=" color: #0055bb;   "&gt;libfyaml&lt;/a&gt; backend offering stricter YAML 1.2 support. Here’s a test-suite comparison plus a tour of Psych’s YAML edge cases.&lt;/p&gt;
  &lt;p&gt;David Berube &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190138/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 Rails 7.2 is Already EOL; 8.0 is Nov 7. What’s Your Exposure?&lt;/a&gt;&lt;/span&gt; — We scan every image, runtime, and K8s workload for CVEs, prioritize by CISA KEV, and manage your risk. &lt;a href="https://rubyweekly.com/link/190138/rss" style=" color: #0055bb;   "&gt;Let's talk!&lt;/a&gt;&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Infrastructure Assessment &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190139/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;One Decision Put Ruby into a Downward Spiral, and It's Not Too Late to Fix It&lt;/a&gt; – I don't agree with the conclusion, but it's an interesting read. &lt;cite&gt;Matt Solt&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190140/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Rails Deprecations You Missed This Summer&lt;/a&gt; – Eight Active Record changes bound for Rails 8.2. &lt;cite&gt;Julio Lucero&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190141/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Standardizing Exception Message Style in Ruby&lt;/a&gt; &lt;cite&gt;Daniel Doubrovkine&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/190142/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Optimizing Rails DB Usage: Bullet vs. Prosopite&lt;/a&gt;  &lt;cite&gt;Spinel Cooperative&lt;/cite&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;🛠 Code &amp;amp; Tools&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190143/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;json 3.0: The JSON Gem Gets a Big Clean-Up&lt;/a&gt;&lt;/span&gt; — &lt;code&gt;JSON.load&lt;/code&gt; and &lt;code&gt;JSON.dump&lt;/code&gt; are now safe by default with the removal of &lt;code&gt;create_additions&lt;/code&gt;, plus lots of cleanup (no more global mutable defaults, which were blocking Ractor). &lt;strong&gt;However, v3.0 &lt;a href="https://rubyweekly.com/link/190144/rss" style=" color: #0055bb;   "&gt;breaks current Rails releases&lt;/a&gt;&lt;/strong&gt; so pin &lt;code&gt;json &amp;lt; 3&lt;/code&gt; for now.&lt;/p&gt;
  &lt;p&gt;Jean Boussier &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;span&gt;📊&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/190145/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;SimpleCov 1.2: Per-Test Attribution and Production Coverage&lt;/a&gt;&lt;/span&gt; — The code coverage tool can now attribute coverage to individual tests, rerun only affected tests on save, cover views (ERB/Haml/Slim), and monitor coverage on &lt;em&gt;production&lt;/em&gt; traffic to find code that’s not getting used.&lt;/p&gt;
  &lt;p&gt;Erik Berlin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190146/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Rails Monitoring That Never Stops at the Cap. No Overage Invoices&lt;/a&gt;&lt;/span&gt; — Errors, traces, Sidekiq, hosts and logs in one gem. Unlimited users, one bill. &lt;a href="https://rubyweekly.com/link/190146/rss" style=" color: #0055bb;   "&gt;30-day free trial, no card&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;AppSignal &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190147/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Grape 4.0: The Opinionated REST-like API Framework&lt;/a&gt;&lt;/span&gt; — Grape can run on Rack or be pulled into existing Rails or Sinatra apps, say, and provides a DSL specifically to build RESTful APIs. &lt;a href="https://rubyweekly.com/link/190148/rss" style=" color: #0055bb;   "&gt;v4.0&lt;/a&gt; is &lt;a href="https://rubyweekly.com/link/190149/rss" style=" color: #0055bb;   "&gt;much faster&lt;/a&gt; than before, adds HTTP &lt;code&gt;QUERY&lt;/code&gt; support, and removes deprecations.&lt;/p&gt;
  &lt;p&gt;Doubrovkine, Proulx, et al. &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/190150/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;WhatLanguage 2.1: Natural Language Detection for 160+ Languages&lt;/a&gt;&lt;/span&gt; — No-dependency Unicode and statistics-based text language detection for strings. v2.1 improves detection for short texts and handles texts with mixed scripts better.&lt;/p&gt;
  &lt;p&gt;Peter Cooper &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;⭐ &lt;a href="https://rubyweekly.com/link/190151/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems / Bundler 4.1 Beta 1&lt;/a&gt; is ready to try, swapping the Molinillo dependency-resolution implementation for PubGrub, adding &lt;a href="https://rubyweekly.com/link/190152/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;content-addressable gems&lt;/a&gt;, post-quantum signing, and &lt;a href="https://rubyweekly.com/link/190153/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;&lt;code&gt;--cooldown&lt;/code&gt;&lt;/a&gt; overrides.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 &lt;a href="https://rubyweekly.com/link/190154/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyLLM 2.0.0 RC2&lt;/a&gt; – Here's &lt;a href="https://rubyweekly.com/link/190155/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;some of what's coming&lt;/a&gt; for the popular LLM / AI framework, including resumable agents and better support for non-text modalities like OCR, video-gen and TTS.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190156/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rv 0.7&lt;/a&gt; – Ruby version/gem manager that installs precompiled Rubies in seconds.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190157/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Parallel 2.2&lt;/a&gt; – Execute code in parallel using processes, threads, or Ractors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190158/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;mruby 4.1 RC&lt;/a&gt; – Matz's lightweight, embeddable Ruby implementation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190159/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;ruby-macho 7.0&lt;/a&gt; – Pure-Ruby library for parsing and modifying Mach-O files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190160/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;The Git Gem 5.4&lt;/a&gt; – Interface for interacting with Git repositories.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px;"&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📰 Classifieds&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;💎 Shipping Ruby code with AI agents? &lt;a href="https://rubyweekly.com/link/190161/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Undercover CI&lt;/a&gt; catches untested methods in your PRs before you merge. Coverage percentages won't.&lt;/p&gt;
 
&lt;p&gt;🌮 &lt;a href="https://rubyweekly.com/link/190162/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Join AppSignal for tacos at Rails World&lt;/a&gt;. Sunset in Austin with Evil Martians, a donut tower, swag &amp;amp; nerdy ice breakers. &lt;a href="https://rubyweekly.com/link/190162/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RSVP&lt;/a&gt;.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0;"&gt;&lt;p&gt;📢  Elsewhere in the ecosystem&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em;"&gt;
  &lt;a href="https://rubyweekly.com/link/190163/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qwtnwizdp1fp8yvzwdmd.jpg" width="640" style="    line-height: 100%;      "&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;✨ GitHub has &lt;a href="https://rubyweekly.com/link/190164/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;a new privacy-safe star history API&lt;/a&gt;. GitHub recently locked down the 'stargazer' endpoints for privacy reasons, which broke star tracking sites like &lt;a href="https://rubyweekly.com/link/190165/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Star History&lt;/a&gt; (&lt;a href="https://rubyweekly.com/link/190166/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;more background here&lt;/a&gt;). Now you can check out &lt;a href="https://rubyweekly.com/link/190163/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;an example comparing three Ruby libraries&lt;/a&gt; &lt;em&gt;(shown above)&lt;/em&gt; or create your own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/190167/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tailwind Labs is joining Shopify&lt;/a&gt;. &lt;em&gt;Tailwind CSS&lt;/em&gt; and their other open source projects will stay maintained and MIT-licensed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇨🇿 &lt;a href="https://rubyweekly.com/link/190168/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;EuRuKo 2026&lt;/a&gt; is next week in Brno, with Matz opening and Koichi Sasada closing. &lt;a href="https://rubyweekly.com/link/190169/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Tickets&lt;/a&gt; are still available.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🐘 &lt;a href="https://rubyweekly.com/link/190170/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kafgres&lt;/a&gt; is a Kafka-compatible message broker that runs &lt;em&gt;inside&lt;/em&gt; Postgres. Catnip for the &lt;em&gt;"just use Postgres"&lt;/em&gt; fans who want a queue and a log in one place!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;👕 TIL you can &lt;a href="https://rubyweekly.com/link/190171/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;buy official Puma merch&lt;/a&gt; via a collaboration with &lt;em&gt;Planet Argon&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style=" font-size: 15px; line-height: 1.48em;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
  &lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;




&lt;img src="https://rubyweekly.com/open/816/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/816</guid>
    </item>
    <item>
      <title>ZJIT can now inline GC allocations</title>
      <link>https://rubyweekly.com/issues/815</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;#​815 — September 3, 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/189891/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;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
    
    &lt;table border=0 cellpadding=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/189850/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/upfxjx5o3kbec1l4cc40.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/189850/rss" title="railsatscale.com" style=" color: #0055bb;    font-size: 1.1em; line-height: 1.4em;"&gt;ZJIT 🤝 GC: Inlining GC Fastpath in ZJIT&lt;/a&gt;&lt;/span&gt; — JIT compilation first came to CRuby eight years ago, but the garbage collector has remained opaque to CRuby's JITs, with every allocation requiring a function call. Now, ZJIT can &lt;em&gt;inline&lt;/em&gt; allocations, yielding a notable performance boost. Fingers crossed for Ruby 4.1!&lt;/p&gt;
  &lt;p&gt;Peter Zhu &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;&lt;p&gt;💡 On Bluesky, Benoit Daloze noted that &lt;a href="https://rubyweekly.com/link/189851/rss" style=" color: #0055bb; font-weight: 600;   "&gt;TruffleRuby has been doing this for a decade&lt;/a&gt;, one of many reasons it's such a fast implementation!&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=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/189849/rss" style=" color: #0055bb;   "&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/d3213a3c.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/189849/rss" title="go.fastruby.io" style=" color: #0055bb;    font-size: 1.05em;"&gt;🚨 We Give Your Auditors VEX, Not a Scanner Dump&lt;/a&gt;&lt;/span&gt; — We map your images, runtimes, and K8s workloads against CISA's KEV catalog, decide which findings actually impact your code, and issue the verdicts as VEX statements. Rails 7.2 is already EOL and 8.0 is next: Nov 7! What else is a risk in production?&lt;/p&gt;
  &lt;p&gt;FastRuby.io® | Infrastructure Assessment &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
  
  &lt;p&gt;&lt;span style="font-weight: 600; font-size: 1.1em; color: #000;"&gt;&lt;a href="https://rubyweekly.com/link/189892/rss" title="intertwingly.net" style=" color: #0055bb;    font-size: 1.05em;"&gt;Campfire Now Works on Spinel (Mostly)&lt;/a&gt;&lt;/span&gt; — Sam's work compiling Rails apps to run on Matz's &lt;a href="https://rubyweekly.com/link/189893/rss" style=" color: #0055bb;   "&gt;Spinel&lt;/a&gt; Ruby AOT compiler has yielded a &lt;a href="https://rubyweekly.com/link/189894/rss" style=" color: #0055bb;   "&gt;Campfire&lt;/a&gt; 'that chats' in a 5MB binary. Far from 100% complete, but you &lt;em&gt;can&lt;/em&gt; grab it and try it for yourself.&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;&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/189852/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyGems and Bundler 4.0.20&lt;/a&gt; make &lt;code&gt;gem&lt;/code&gt; work under &lt;code&gt;RUBY_BOX=1&lt;/code&gt; (&lt;a href="https://rubyweekly.com/link/189853/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;explained in more detail here&lt;/a&gt;), and &lt;code&gt;gem update --system&lt;/code&gt; now prints a link to the release notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🤖 As part of Rails' &lt;em&gt;Agents on Rails&lt;/em&gt; effort, the newly released &lt;a href="https://rubyweekly.com/link/189854/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Fable 5.1 and GLM 5.3 Flash were run against their benchmark&lt;/a&gt; showing Fable is the new leader amongst models. GLM 5.3 Flash did well, though, at ~96% lower cost.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Samuel Williams proposes that &lt;code&gt;IO::Buffer&lt;/code&gt;, first introduced in Ruby 3.1, &lt;a href="https://rubyweekly.com/link/189855/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;should stop being 'experimental'&lt;/a&gt; in Ruby 4.1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🇩🇪 &lt;a href="https://rubyweekly.com/link/189856/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Berlin.rb&lt;/a&gt; is a new monthly meetup in Berlin, Germany. Its first meetup, next week, includes Carmine Paolino giving a talk on &lt;a href="https://rubyweekly.com/link/189857/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;RubyLLM&lt;/a&gt; 2.0.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189858/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Kevin Menard has been proposed as a CRuby core committer&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;span&gt;🔒&lt;/span&gt; &lt;a href="https://rubyweekly.com/link/189895/rss" title="www.securityweek.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;A Critical Rails Vulnerability in Attackers' Crosshairs&lt;/a&gt;&lt;/span&gt; — Remember the major &lt;a href="https://rubyweekly.com/link/189896/rss" style=" color: #0055bb;   "&gt;Active Storage vulnerability&lt;/a&gt; (dubbed &lt;em&gt;KindaRails2Shell&lt;/em&gt;) from late July? It's now being actively exploited, and VulnCheck &lt;a href="https://rubyweekly.com/link/189897/rss" style=" color: #0055bb;   "&gt;reckoned&lt;/a&gt;, back in early August, that patching may not be enough if your secrets leaked first.&lt;/p&gt;
  &lt;p&gt;Ionut Arghire (Security 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/189859/rss" title="code.dblock.org" style=" color: #0055bb;    font-size: 1.05em;"&gt;Adventures in Daylight Saving, Norfolk Island, and Time Zone Math&lt;/a&gt;&lt;/span&gt; — More timezone quirks (don't we love 'em?) including how &lt;code&gt;Europe/Dublin&lt;/code&gt;'s 'inverted' DST scheme can make Ruby's &lt;code&gt;dst?&lt;/code&gt; disagree with itself, and why Norfolk Island's permanent 30 minute offset change broke a gem.&lt;/p&gt;
  &lt;p&gt;Daniel Doubrovkine &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/189860/rss" title="sinaptia.dev" style=" color: #0055bb;    font-size: 1.05em;"&gt;AI Shouldn't Cost More Than It Saves&lt;/a&gt;&lt;/span&gt; — We can find where LLMs pay off, validate with real data, and tune for cost/effectiveness. Need help? &lt;a href="https://rubyweekly.com/link/189861/rss" style=" color: #0055bb;   "&gt;Let's talk&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;SINAPTIA &lt;span style="text-transform: uppercase; margin-left: 4px; font-size: 0.9em;   color: #997 !important; padding: 1px 4px; "&gt;sponsor&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=0 cellspacing=0&gt;&lt;tr&gt;&lt;td style="font-size: 15px; line-height: 1.48em; padding: 0px 15px;"&gt;
&lt;p&gt;📺 &lt;a href="https://rubyweekly.com/link/189862/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Charles Nutter Tells the JRuby Story&lt;/a&gt; – An hour long interview with JRuby's maintainer on the project's past, present and future, plus a little myth debunking. &lt;cite&gt;Technology for Humans&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189863/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Queue Batches: Evolution and Architecture&lt;/a&gt; – How &lt;a href="https://rubyweekly.com/link/189864/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Solid Queue&lt;/a&gt; tracks batch completion without hammering a single database row, by the dev who built it. &lt;cite&gt;JP Camara&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189865/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Using Rails for Marketing Sites in the AI Era?&lt;/a&gt; – Two developers debate the idea. &lt;cite&gt;Adam McCrea and Jon Sully&lt;/cite&gt;&lt;/p&gt;
&lt;p&gt;📄 &lt;a href="https://rubyweekly.com/link/189866/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Using Ruby to Set the Status Line in Claude Code&lt;/a&gt; &lt;cite&gt;Lucian Ghinda&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/189898/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/r2muzbdbco1swucbyhax.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/189898/rss" title="paolino.me" style=" color: #0055bb;    font-size: 1.05em;"&gt;ArchSpec: Executable Architecture Specs for Ruby Apps&lt;/a&gt;&lt;/span&gt; — An architecture linter for any Ruby codebase. Declare components and boundaries in a single 
spec, then changes can be checked in CI, with no AI and no app boot involved. Presets are included for Rails, hexagonal and modular monoliths. If you remember &lt;a href="https://rubyweekly.com/link/189899/rss" style=" color: #0055bb;   "&gt;Packwerk&lt;/a&gt;, this goes a bit further.&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/189870/rss" title="www.appsignal.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;APM for Ruby on Rails. One Gem, Every Feature, One Bill&lt;/a&gt;&lt;/span&gt; — Errors, N+1 queries, slow SQL, Sidekiq jobs and host metrics. Every feature on every plan. Two-minute install.&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/189867/rss" title="ferrum.rubycdp.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Ferrum 0.18: The High-Level API to Control Chrome in Ruby&lt;/a&gt;&lt;/span&gt; — A long standing library that drives Chrome over CDP (no Selenium needed). &lt;a href="https://rubyweekly.com/link/189868/rss" style=" color: #0055bb;   "&gt;0.18&lt;/a&gt; adds &lt;code&gt;Ferrum::Worker&lt;/code&gt; for talking to Workers and Service Workers, an API for reading the CDP accessibility tree, and thread safety improvements. &lt;em&gt;(Yes, we mentioned this release last week, but I only just noticed it deserved a full writeup!)&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Dmitry Vorotilin and RubyCDP 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;💡 Capybara users also get &lt;a href="https://rubyweekly.com/link/189869/rss" style=" color: #0055bb; font-weight: 600;   "&gt;Cuprite 0.18&lt;/a&gt; (the Ferrum-powered Chrome driver for Capybara) today, adding real drag-and-drop events and initial shadow DOM support.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;table border=0 cellpadding=0 cellspacing=0 border=0 cellpadding=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/189871/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;MiniMagick 5.4: A Mini Replacement for RMagick&lt;/a&gt;&lt;/span&gt; — For when you don't need the full power of &lt;a href="https://rubyweekly.com/link/189872/rss" style=" color: #0055bb;   "&gt;RMagick&lt;/a&gt; and just need ImageMagick's features for resizing, rotating, converting, etc. &lt;a href="https://rubyweekly.com/link/189873/rss" style=" color: #0055bb;   "&gt;v5.4&lt;/a&gt; adds a feature to pass open file descriptors in, rather than writing/reading a temporary file.&lt;/p&gt;
  &lt;p&gt;Marohnić 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/189874/rss" title="github.com" style=" color: #0055bb;    font-size: 1.05em;"&gt;Vessel 0.3: Fast High-Level Web Crawling Framework&lt;/a&gt;&lt;/span&gt; — Ruby's answer to &lt;em&gt;Scrapy&lt;/em&gt; is back with the first release in five years. Pages can now be fetched using Chrome via &lt;a href="https://rubyweekly.com/link/189875/rss" style=" color: #0055bb;   "&gt;Ferrum&lt;/a&gt; or plain HTTP via Mechanize, plus we get proxy rotation, a middleware pipeline, and more.&lt;/p&gt;
  &lt;p&gt;Dmitry Vorotilin &lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 cellpadding=0 cellspacing=0 border=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/189876/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Bullet 8.2&lt;/a&gt; – The N+1 query detector gains thread-safe &lt;code&gt;pause&lt;/code&gt;, &lt;code&gt;resume&lt;/code&gt; and &lt;code&gt;skip&lt;/code&gt; APIs, plus Ruby 4 support.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189877/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;rubocop-graphql 1.8&lt;/a&gt; – Three new cops for &lt;code&gt;graphql-ruby&lt;/code&gt; schemas, and lazy cop loading for faster boot time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189878/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Graphiti 2.0&lt;/a&gt; – Sits on top of your models and exposes them over a JSON:API-compliant interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rubyweekly.com/link/189879/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Alba 4.0&lt;/a&gt; – A backwards-incompatible release for the JSON serializer that sweeps out long-deprecated APIs.&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/189880/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;APM for Ruby and Rails&lt;/a&gt;: Errors, N+1s, slow SQL, Sidekiq jobs and host metrics in one gem. &lt;a href="https://rubyweekly.com/link/189880/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;30-day trial, no card&lt;/a&gt;.&lt;/p&gt;
 
&lt;p&gt;Building a reporting dashboard in Rails? &lt;a href="https://rubyweekly.com/link/189881/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;TimescaleDB adds time-series analytics&lt;/a&gt; to your Postgres, so it stays fast as data grows.&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;🪄  Join the Quine Clique&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 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/189882/rss" style=" color: #0055bb;"&gt;&lt;img src="https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wge78z1quiirg0jzfysn.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;We've previously written (at the end of &lt;a href="https://rubyweekly.com/link/189900/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;issue 805&lt;/a&gt;) about Ruby core team member Yusuke 'mame' Endoh and his fantastic code experiments and IOCCC entries.&lt;/p&gt;
&lt;p&gt;Among numerous Ruby projects, Yusuke is known for &lt;a href="https://rubyweekly.com/link/189883/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Quine Relay&lt;/a&gt;, a Ruby program that generates a Rust program which then continues through 128 different languages before a REXX program generates the original Ruby program again.&lt;/p&gt;
&lt;p&gt;Now he's back with &lt;a href="https://rubyweekly.com/link/189882/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;Quine Clique&lt;/a&gt;, an even more significant undertaking written in Ruby that's both a standard quine &lt;em&gt;and&lt;/em&gt; able to produce a quine in any of 50 different languages. And then, &lt;em&gt;those&lt;/em&gt; quines have the same featureset!&lt;/p&gt;
&lt;p&gt;▶️ Yusuke has also &lt;a href="https://rubyweekly.com/link/189884/rss" style=" color: #0055bb; font-weight: 500 !important;   "&gt;shared a 9-minute video&lt;/a&gt; showing off the concept, if you don't want to run it for yourself.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;table border=0 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/815/rss" width="1" height="1" /&gt;</description>
      <pubDate>Thu, 3 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://rubyweekly.com/issues/815</guid>
    </item>
    <item>
      <title>Bringing Rails into the Ractor age</title>
      <link>https://rubyweekly.com/issues/814</link>
      <description>

  

    
    
  




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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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