---
title: "Shopify's structural linter for Ruby codebases"
publication: "Ruby Weekly"
issue: 816
published_at: "2026-09-10"
canonical_url: "https://rubyweekly.com/issues/816"
---

Plus json 3.0's big (but breaking) clean-up, Matz debugging Sam Ruby's compiled Campfire, and a faster Grape.        

#​816 — September 10, 2026 

[Read on the Web](https://rubyweekly.com/issues/816)  

Together with [![JudoScale\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_500,h_122/e_make_transparent/co_white,e_outline:9/uimgjqpabq3x7sq0q631.png)](https://judoscale.com/ruby)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/wxfjdsufnvsacb3lqxdx.jpg)](https://www.youtube.com/playlist?list=PLbFmgWm555ybx99aWeqKQvCc5kmZwTuMv)  

[RubyKaigi's Talks](https://www.youtube.com/playlist?list=PLbFmgWm555ybx99aWeqKQvCc5kmZwTuMv) Are Finally Online  

[RubyKaigi](https://rubykaigi.org/2026/), 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 [68 videos in this playlist](https://www.youtube.com/playlist?list=PLbFmgWm555ybx99aWeqKQvCc5kmZwTuMv). Some highlights: 

- ▶️ [Matz's "Meet Spinel" keynote](https://www.youtube.com/watch?v=frA3kqm1-rA) – 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 [Spinel](https://github.com/matz/spinel) project (including a fun live demo).
- ▶️ [Twenty Years of JRuby](https://www.youtube.com/watch?v=DV8K8gOyc98) – Charles Nutter's keynote on two decades of keeping Ruby thriving on the JVM.
- ▶️ [Surviving Black Friday: 329 Billion Requests with Falcon](https://www.youtube.com/watch?v=NMruXY3TrpI) – Falcon's author Samuel Williams and fellow Shopify engineers on running the [Falcon](https://github.com/socketry/falcon) high-performance web server at scale.
- ▶️ [From C to Ruby: Porting Doom](https://www.youtube.com/watch?v=mmAzLFtbqfY) – Chris Hasiński on his [Ruby DOOM port](https://github.com/khasinski/doom). 

I'll link to more as I get through them. There's some great stuff here!    [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b42eb770.png)](https://judoscale.com/ruby) 

[You Are an Expensive Babysitter](https://judoscale.com/ruby) — 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. [Sign up for free and stop worrying about your job queues](https://judoscale.com/ruby). 

Judoscale sponsor   

[Introducing Rubydex Linter: Structural Checks for Ruby Projects](https://railsatscale.com/2026-09-08-introducing-rubydex-linter-structural-checks-for-ruby-projects/) — [Rubydex](https://github.com/Shopify/rubydex), a static analysis engine for Ruby, now has a built-in linter for cross-file, project-level structural rules, like _“no class may include both of these mixins”_. Shopify has already used it to replace numerous long-running tests with 20+ such rules to check its whole monolith in under a minute. 

Stan Lo   

**⚡️ IN BRIEF:** 

- Ractor's rules are changing: [classes and modules are now 'owned' by the Ractor that created them](https://bugs.ruby-lang.org/issues/22226), and only that owner can modify them, replacing several 'main Ractor only' rules. Also merged: [timeout support for `Ractor.receive` and `Ractor.select`](https://bugs.ruby-lang.org/issues/22255).
- Bozhidar Batsov has [switched off 24 style cops under RuboCop's new 'preview' mode](https://github.com/rubocop/rubocop/pull/15676), a taste of the leaner defaults planned for RuboCop 2.
- Shopify's "$1 million over four years" _Ruby Shield_ partnership with Ruby Central has concluded. [Here's a report on what it achieved](https://rubycentral.org/news/ruby-shield-a-reflection-on-four-years-of-securing-the-ruby-supply-chain/).
- 🔒 `rubyzip` versions prior to 3.4.0 [contain a path traversal vulnerability](https://rubysec.com/advisories/CVE-2026-85396/).
- When Sam Ruby's [Spinel](https://github.com/matz/spinel)-compiled _Campfire_ wouldn't scale much beyond one core, [Matz found a bug in Spinel's runtime](https://intertwingly.net/blog/2026/09/05/Campfire-Measured.html), and that was only the _start_ of this fun story.   

[Converting a Block Interface to `start`/`stop` Methods with a Fiber](https://island94.org/2026/09/converting-a-ruby-block-interface-to-start-stop-methods-with-a-fiber) — You might reach for a thread to handle this problem, but [fibers](https://docs.ruby-lang.org/en/master/Fiber.html) can get you there with less plumbing and overhead. 

Ben Sheldon   

[Beyond ORMs: Why Sequel's Original Creator Now Writes Plain SQL](https://noteflakes.com/articles/2026-09-05-beyond-orms) — The original creator of [Sequel](https://github.com/jeremyevans/sequel/) (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? 

Sharon Rosner  

💡 [This 2009 blog interview with Jeremy Evans](https://on-ruby.blogspot.com/2009/01/sequel-interview-with-jeremy-evans.html) is a neat bit of history covering Sequel's maintenance handover and history generally.  

[How Compliant is Psych? How Much Better Is libfyaml?](https://durableprogramming.com/blog/how-compliant-is-psych/) — [Psych](https://github.com/ruby/psych), Ruby’s YAML parser, added an experimental [libfyaml](https://github.com/pantoniou/libfyaml) backend offering stricter YAML 1.2 support. Here’s a test-suite comparison plus a tour of Psych’s YAML edge cases. 

David Berube   

[🚨 Rails 7.2 is Already EOL; 8.0 is Nov 7. What’s Your Exposure?](https://go.fastruby.io/xlr) — We scan every image, runtime, and K8s workload for CVEs, prioritize by CISA KEV, and manage your risk. [Let's talk!](https://go.fastruby.io/xlr) 

FastRuby.io® | Infrastructure Assessment sponsor   

📄 [One Decision Put Ruby into a Downward Spiral, and It's Not Too Late to Fix It](https://rubyai.beehiiv.com/p/one-decision-put-ruby-into-a-downward-spiral-it-s-not-too-late-to-fix-it) – I don't agree with the conclusion, but it's an interesting read. Matt Solt 

📄 [The Rails Deprecations You Missed This Summer](https://www.fastruby.io/blog/rails-deprecations-you-missed-this-summer.html) – Eight Active Record changes bound for Rails 8.2. Julio Lucero 

📄 [Standardizing Exception Message Style in Ruby](https://code.dblock.org/2026/09/05/standardizing-exception-message-style-in-ruby.html) Daniel Doubrovkine 

📄 [Optimizing Rails DB Usage: Bullet vs. Prosopite](https://spinel.coop/blog/optimizing-rails-db-usage-bullet-prosopite/) Spinel Cooperative  

🛠 Code & Tools  

[json 3.0: The JSON Gem Gets a Big Clean-Up](https://github.com/ruby/json/releases/tag/v3.0.0) — `JSON.load` and `JSON.dump` are now safe by default with the removal of `create_additions`, plus lots of cleanup (no more global mutable defaults, which were blocking Ractor). **However, v3.0 [breaks current Rails releases](https://github.com/rails/rails/issues/58685)** so pin `json < 3` for now. 

Jean Boussier   

📊 [SimpleCov 1.2: Per-Test Attribution and Production Coverage](https://github.com/simplecov-ruby/simplecov/releases/tag/v1.2.0) — 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 _production_ traffic to find code that’s not getting used. 

Erik Berlin   

[Rails Monitoring That Never Stops at the Cap. No Overage Invoices](https://www.appsignal.com/ruby?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=sponsored-link&utm_term=0910) — Errors, traces, Sidekiq, hosts and logs in one gem. Unlimited users, one bill. [30-day free trial, no card](https://www.appsignal.com/ruby?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=sponsored-link&utm_term=0910). 

AppSignal sponsor   

[Grape 4.0: The Opinionated REST-like API Framework](https://github.com/ruby-grape/grape/blob/v4.0.0/README.md) — Grape can run on Rack or be pulled into existing Rails or Sinatra apps, say, and provides a DSL specifically to build RESTful APIs. [v4.0](https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md#400-2026-09-07) is [much faster](https://www.reddit.com/r/ruby/comments/1wa5yl1/grape_400_is_out_80_faster_than_335_plus_http/) than before, adds HTTP `QUERY` support, and removes deprecations. 

Doubrovkine, Proulx, et al.   

[WhatLanguage 2.1: Natural Language Detection for 160+ Languages](https://github.com/peterc/whatlanguage) — 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. 

Peter Cooper   

- ⭐ [RubyGems / Bundler 4.1 Beta 1](https://blog.rubygems.org/2026/09/09/4.1.0.beta1-released.html) is ready to try, swapping the Molinillo dependency-resolution implementation for PubGrub, adding [content-addressable gems](https://github.com/ruby/rubygems/pull/9773), post-quantum signing, and [`--cooldown`](https://github.com/ruby/rubygems/pull/9734) overrides.
- 🤖 [RubyLLM 2.0.0 RC2](https://rubyllm.com/next/) – Here's [some of what's coming](https://github.com/crmne/ruby_llm/releases/tag/v2.0.0.rc1) for the popular LLM / AI framework, including resumable agents and better support for non-text modalities like OCR, video-gen and TTS.
- [rv 0.7](https://github.com/spinel-coop/rv) – Ruby version/gem manager that installs precompiled Rubies in seconds.
- [Parallel 2.2](https://github.com/grosser/parallel) – Execute code in parallel using processes, threads, or Ractors.
- [mruby 4.1 RC](https://github.com/mruby/mruby/blob/master/NEWS.md) – Matz's lightweight, embeddable Ruby implementation.
- [ruby-macho 7.0](https://github.com/Homebrew/ruby-macho) – Pure-Ruby library for parsing and modifying Mach-O files.
- [The Git Gem 5.4](https://github.com/ruby-git/ruby-git) – Interface for interacting with Git repositories.       

📰 Classifieds   

💎 Shipping Ruby code with AI agents? [Undercover CI](https://undercover-ci.com) catches untested methods in your PRs before you merge. Coverage percentages won't. 

--- 

🌮 [Join AppSignal for tacos at Rails World](https://luma.com/h5ymkrex?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=classified&utm_term=0910). Sunset in Austin with Evil Martians, a donut tower, swag & nerdy ice breakers.[RSVP](https://luma.com/h5ymkrex?utm_medium=paid&utm_campaign=rubyweekly&utm_source=rubyweekly&utm_content=classified&utm_term=0910).    

📢 Elsewhere in the ecosystem 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qwtnwizdp1fp8yvzwdmd.jpg)](https://www.star-history.com/?repos=bensheldon%2Fgood_job%2Crails%2Fsolid_queue%2Cque-rb%2Fque&type=date&legend=top-left)  

- ✨ GitHub has [a new privacy-safe star history API](https://github.blog/changelog/2026-09-04-new-api-endpoint-provides-privacy-safe-star-history-data/). GitHub recently locked down the 'stargazer' endpoints for privacy reasons, which broke star tracking sites like [Star History](https://www.star-history.com/) ([more background here](https://www.star-history.com/blog/new-github-star-history-api)). Now you can check out [an example comparing three Ruby libraries](https://www.star-history.com/?repos=bensheldon%2Fgood_job%2Crails%2Fsolid_queue%2Cque-rb%2Fque&type=date&legend=top-left) _(shown above)_ or create your own.
- [Tailwind Labs is joining Shopify](https://tailwindcss.com/blog/tailwind-is-joining-shopify). _Tailwind CSS_ and their other open source projects will stay maintained and MIT-licensed.
- 🇨🇿 [EuRuKo 2026](https://2026.euruko.org/agenda.html) is next week in Brno, with Matz opening and Koichi Sasada closing. [Tickets](https://2026.euruko.org/register.html) are still available.
- 🐘 [Kafgres](https://rynr.dev/blog/kafgres/) is a Kafka-compatible message broker that runs _inside_ Postgres. Catnip for the _"just use Postgres"_ fans who want a queue and a log in one place!
- 👕 TIL you can [buy official Puma merch](https://commitgoods.com/collections/puma) via a collaboration with _Planet Argon_.         

Curated by [Peter Cooper](https://twitter.com/cooperx86) and [Glenn Goodrich](https://twitter.com/ruprict).
Published by [Cooperpress](https://cooperpress.com/). 

[Change your email](https://rubyweekly.com/edit_subscription/*|UID|*) or [Stop getting this newsletter.](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
