---
title: "RSpec vs Minitest: Setting the record straight"
publication: "Ruby Weekly"
issue: 787
published_at: "2026-02-12"
canonical_url: "https://rubyweekly.com/issues/787"
---

Plus, RubyConf's CFP opens, some gnarly ZJIT internals, and what the Ruby core team is discussing.       

#​787 — February 12, 2026 

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

Together with [![FastRuby.io\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_467,h_106/e_make_transparent/co_white,e_outline:14/y65nyff19ylf5udphsq4.png)](https://go.fastruby.io/37n)   

Ruby Weekly 

![](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/u2alwrtim9qd0o2n1fwm.jpg)   

Minitest fast, RSpec slow? Not so fast!   

Last week, I included a post about an RSpec to Minitest migration that reduced test run time by 200x. My summary glossed over the reasons for the speedup, and a _"RSpec slow, Minitest fast"_ implication was easy to take away. Thanks to Tyler Ritchie for pointing this out. _Mea culpa._ 

Big tooling migrations force you to drop cruft and rethink things. _That_ causes major speedups, not merely switching frameworks. 

In [Don't Throw the Specs Out with the Factories](https://beautifulruby.com/code/fixturebot), Brad Gessler nails this distinction and, more importantly, takes steps to improve things! He presents [FixtureBot](https://github.com/rubymonolith/fixturebot), a new approach to getting _"the speed of fixtures with the syntactic sugar of factories"_, and pushes back on why RSpec is getting a bad rap. 

– _Peter Cooper, your humble editor._    [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/00ea9319.png)](https://go.fastruby.io/37n) 

[⏰ Heroku Is In Maintenance Mode. Plan Your Migration Now](https://go.fastruby.io/37n) — The longer you wait, the harder it gets. Ready to migrate away from Heroku? FastRuby’s 6-phase migration service moves your Rails app to Render, Fly, or elsewhere. Get a detailed plan before committing. 

Heroku Migration Service by FastRuby.io® sponsor   

[TutorialKit.rb: The `ruby.wasm` Journey Goes Onward](https://evilmartians.com/chronicles/tutorialkit-rb-the-ruby-wasm-journey-goes-onward) — TutorialKit.rb is a toolkit for building interactive Ruby and Rails tutorials that run entirely in the browser using WebAssembly and WebContainers – [here's a live example.](https://action-policy-tutorial.fly.dev/2-getting-started/1-exploring-the-app/) A fantastic look at what's possible with Ruby in the browser right now. 

Pazderin and Turner (Evil Martians)   

**⚡️ IN BRIEF:** 

- 😬 [Heroku](https://www.heroku.com/) has [adopted a 'sustaining engineering model'](https://www.heroku.com/blog/an-update-on-heroku/) (i.e. gone into "maintenance mode"). This was [widely interpreted](https://news.ycombinator.com/item?id=46913903) as 'Heroku is over', though that's [not strictly true.](https://nombiezinja.com/word-things/2026/2/8/heroku-is-not-dead)
- 🇺🇸 [RubyConf 2026](https://rubyconf.org/) takes place this July 14-16 in Las Vegas. [The CFP has just opened](https://sessionize.com/rubyconf-2026/) if you'd like to speak - it closes March 15.
- An official [Ruby dev meeting is taking place today](https://bugs.ruby-lang.org/issues/21839) where lead core team members, like Matz, answer questions about features and bugs. A few fun things in the agenda, like `autoload_relative` and [a new API to scan directories efficiently.](https://bugs.ruby-lang.org/issues/21800)
- If you use the `mise` version manager, [it can now download precompiled Ruby binaries](https://mise.jdx.dev/lang/ruby.html#precompiled-binaries) instead of compiling from source each time.
- Max Bernstein, who works on ZJIT, shares a brief but [super-technical look behind the scenes](https://bernsteinbear.com/blog/multiple-entry/) at just one of many design decisions taking place in the deepest parts of Ruby.   

[Build a Resumable CSV Import with `ActiveJob::Continuable`](https://codewithrails.com/blog/rails-resumable-csv-import-continuable/) — Rails 8.1 introduced [a feature](https://github.com/rails/rails/pull/55127) that allows for jobs to be interrupted and resumed, making it easy to break up laborious tasks into multiple steps. 

Geetfun   

[Building AI Agents in Ruby: Why Is It So Easy?](https://sinaptia.dev/posts/ai-agents-in-ruby-why-is-it-so-easy?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=rubyweekly-2026q1&utm_content=sponsored) — Ruby's power makes AI development a fluid, frictionless experience. Here's why we think it’s a perfect fit for the task. 

SINAPTIA sponsor   

📉 [How We Improved Rails Response Times by 87%](https://fastretro.app/blog/how-we-improved-rails-response-times-by-87-percent) – No tricks. Just setting up good monitoring to finally see where performance problems lie. Fast Retro 

📄 [Use `StringInquirer` for Readable Predicate Methods](https://andycroll.com/ruby/use-stringinquirer-for-readable-predicate-methods/) – e.g. `status.pending?` returns true if `status == "pending"` Andy Croll 

📄 [The Timezone Bug That Hid in Plain Sight For Months](https://blog.arkency.com/the-timezone-bug-that-hid-in-plain-sight-for-months/) Szymon Fiedler  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/qvf1bctaqsmlfrpjal3n.jpg)](https://socketry.github.io/falcon/)  

[Falcon: A High-Performance Web Server for Ruby](https://socketry.github.io/falcon/) — A multi-process, multi-fiber rack-compatible HTTP server built on top of `async`, `async-container` and `async-http`. It’s been a _lonnng_ time since we mentioned this, but it’s now serving most of Shopify’s traffic so you know it can scale. [GitHub repo](https://github.com/socketry/falcon) and a [getting started guide.](https://socketry.github.io/falcon/guides/getting-started/index#installation) 

Samuel Williams   

[EasyTalk: Define, Generate and Validate JSON Schemas in Ruby](https://github.com/sergiobayona/easy_talk) — Reduce complexity with a single Ruby DSL for generating JSON Schema, validations, and error messages. This week’s v3.3.1 release also [integrates](https://github.com/sergiobayona/easy_talk/blob/main/CHANGELOG.md#added) with [RubyLLM](https://rubyllm.com/) for building structured output schemas. 

Sergio Bayona   

[You Don't Need a Second Database for Analytics](https://www.tigerdata.com/timescaledb?utm_source=cooperpress&utm_medium=referral&utm_campaign=ruby-weekly-newsletter) — Tiger Data keeps analytics on live Postgres data. No pipelines, no sync lag. Extend Postgres instead. [Try free](https://www.tigerdata.com/timescaledb?utm_source=cooperpress&utm_medium=referral&utm_campaign=ruby-weekly-newsletter). 

Tiger Data sponsor   

[Ancestry 5.0: Organize an Active Record Model into a Tree Structure](https://github.com/stefankroes/ancestry) — Uses the materialized path pattern to efficiently model tree structures or hierarchies in a model, giving methods like `parent`, `children`, `siblings`, and [many more](https://github.com/stefankroes/ancestry?tab=readme-ov-file#tree-navigation) to your objects. Now supports Rails 8. 

Stefan Kroes   

🎨 [A Quick Demo of Ruby-LibGD v0.2.4](https://rubystacknews.com/2026/02/06/a-quick-demo-of-ruby-libgd-v0-2-4/) — [ruby-libgd](https://github.com/ggerman/ruby-libgd) is a new dynamic image generation library that binds to [libgd.](https://libgd.github.io/) 

Giménez Silva Germán Alberto   

- [RBS::Inline 0.13](https://github.com/soutaro/rbs-inline) – Embed type declarations into Ruby code as comments.
- [Dalli 5.0](https://github.com/petergoldstein/dalli) – High-performance Ruby `memcached` client. [Changelog.](https://github.com/petergoldstein/dalli/blob/main/CHANGELOG.md#500)
- [Rumale 2.1](https://github.com/yoshoku/rumale) – _Scikit-Learn_-style machine learning in Ruby.
- [RDoc 7.2](https://github.com/ruby/rdoc/releases/tag/v7.2.0) – Ruby's official documentation generation tool.       

📰 Classifieds   

📝 Leaving Heroku? We tried the alternatives. [Here’s our take](https://judoscale.com/blog/heroku-alternatives?utm_source=ruby-weekly&utm_medium=newsletter&utm_campaign=content&utm_content=leaving-heroku-opinions). 

--- 

**Stop juggling 5 tools to monitor 1 Rails app** — [AppSignal](https://www.appsignal.com/?utm_source=newsletter&utm_medium=paid&utm_campaign=rubyweekly&utm_term=2-12&utm_content=classified) handles errors, performance, logs, uptime, background jobs and more. Used by 1,500+ teams. Paid plans from ~$19/mo, unlimited seats. [Free trial](https://www.appsignal.com/?utm_source=newsletter&utm_medium=paid&utm_campaign=rubyweekly&utm_term=2-12&utm_content=classified).    

📢 Elsewhere in the ecosystem  

Some other interesting stories in the broader landscape:  

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/uw0t4iiglkangtzsmhud.jpg)](https://planetruby.org/)  

- [Planet Ruby](https://planetruby.org/) is a prototype we're noodling on that's like a traditional 'planet' site (e.g. [Planet PostgreSQL](https://planet.postgresql.org/)) bringing together items from a variety of feeds in one place, but filtered down to just the Ruby-related items (_mostly_successfully).
- Different ecosystem, but if you ever have to search for or deal with `npm` packages, [npmx.dev](https://npmx.dev/) is a fresh, fast way to browse the official npm registry.
- 📊 Data from over 100,000 sites was boiled down into [this useful report on modern CSS usage.](https://www.projectwallace.com/the-css-selection/2026) The median number of CSS rules per site was 2,802, with one page somehow using a whopping 210,695 rules!
- 😍 [Shades of Halftone](https://blog.maximeheckel.com/posts/shades-of-halftone/) is a gorgeously detailed walkthrough of creating pixelation, dithering, and halftone printing effects using GLSL and React Three Fiber. _So aesthetic._
- In personal news, I _finally_ switched from [asdf](https://asdf-vm.com/) to [mise](https://mise.jdx.dev/) for managing my Ruby (and Python, et al.) versions and wow, what a breath of fresh air. ['Just Use Mise'](https://spin.atomicobject.com/just-use-mise/), indeed.         

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/).
