mir-backend-rubylisted
Install: claude install-skill anantbhandarkar/make-it-right
# /mir-backend-ruby · Make It Right (Ruby runtime)
The middle tier. `mir-backend` decides **what is correct** (any language). The framework module (e.g. `mir-backend-ruby-rails`) knows the **library's mechanics**. This tier owns what's true for **all Ruby backends because they run on YARV (MRI) and speak Rack** — the concurrency model, the process model, and the HTTP/dependency layer that Rails, Sinatra, Hanami, and every job worker inherit.
**Runtime assumed:** MRI Ruby 4.0 under Puma. Current stable is **Ruby 4.0.6**; 3.4.x, 3.3.x and 3.2.x are still maintained, 3.1 is EOL (verified against ruby-lang.org on 13 Aug 2026). Notes hold for JRuby except where GVL specifics differ (JRuby has no GVL; true thread parallelism is available). Load order: `mir-backend` → `mir-backend-ruby` → `<framework module>`.
## What changed in Ruby 4.0 (check this before trusting older Ruby advice)
Ruby 4.0.0 shipped 25 Dec 2025. It is the release that was planned and written about as "Ruby 3.5" — blog posts and AI training data referring to 3.5 mean this.
| Change | What breaks | What to write instead |
|---|---|---|
| `Ractor.yield`, `Ractor#take`, `#close_incoming`, `#close_outgoing` **removed** | Every Ractor pipeline written against Ruby 3.x raises `NoMethodError` | `Ractor::Port` for message passing; `Ractor#join` / `#value` to wait for termination |
| `--rjit` **removed** | Boot flags / Dockerfiles carrying `--rjit` fail to start | Drop the flag; use YJIT |
| `Kernel#open` / `IO` with