Hey HN, I'm the author of Rage. I built it because, while I love Ruby, the ecosystem is losing ground. Since 2018, usage among professionals dropped from 10% to 6.9% while Go and Python saw massive growth. Pretending this isn't happening doesn't help the community.
The problem isn't the Ruby language; it's that our primary tools haven't evolved to address the modern requirements of request-cycle latency and synchronous I/O.
The Architecture:
- Concurrency via Fibers: Rage uses a custom Fiber scheduler. You get non-blocking I/O using standard, synchronous-looking Ruby, while the framework handles context switching automatically.
- A Lean Core by Design: We treat low overhead as a design constraint, not just a benchmark goal. When a framework fights for every millisecond, it prevents us from solving problems by piling on layers of bloat.
- The No-Upgrade Philosophy: One of the biggest drains on Ruby teams is tooling churn. We focus strictly on stable APIs. Our goal is that "Upgrade Rage" is a task that never appears in your Jira; most updates should be a simple "bundle update".
What's included:
- Zero-dependency WebSockets
- Fiber-based Background Jobs
- Auto-generated OpenAPI Docs
- Domain Events
- Rails Compatibility (controllers, Active Record, routes work as you expect)
Happy to answer any questions about the implementation, benchmarks, or why you can't just use Elixir.
rageonruby•1h ago
The problem isn't the Ruby language; it's that our primary tools haven't evolved to address the modern requirements of request-cycle latency and synchronous I/O.
The Architecture:
- Concurrency via Fibers: Rage uses a custom Fiber scheduler. You get non-blocking I/O using standard, synchronous-looking Ruby, while the framework handles context switching automatically.
- A Lean Core by Design: We treat low overhead as a design constraint, not just a benchmark goal. When a framework fights for every millisecond, it prevents us from solving problems by piling on layers of bloat.
- The No-Upgrade Philosophy: One of the biggest drains on Ruby teams is tooling churn. We focus strictly on stable APIs. Our goal is that "Upgrade Rage" is a task that never appears in your Jira; most updates should be a simple "bundle update".
What's included:
- Zero-dependency WebSockets - Fiber-based Background Jobs - Auto-generated OpenAPI Docs - Domain Events - Rails Compatibility (controllers, Active Record, routes work as you expect)
Happy to answer any questions about the implementation, benchmarks, or why you can't just use Elixir.