finds.dev← search

// the find

tenderlove/the_metal

★ 520 · Ruby · updated Dec 2014

A spike for thoughts about Rack 2.0

A 2014 research spike by Aaron Patterson (tenderlove) exploring what a Rack 2.0 interface might look like. The core idea is passing req/res objects directly to the app instead of Rack's env hash, with servers owning I/O and middleware separated from the spec itself. It's a historical artifact, not a usable library.

The req/res object model it proposes is cleaner than Rack's env hash — this thinking did influence the eventual Rack 2 and 3 direction. The event hooks for request lifecycle (start_request, finish_request) are a genuinely useful pattern for connection pool management. Filter chains for response middleware are composable without the spaghetti of nested Rack middleware lambdas. It ships tests against Puma, Unicorn, and WEBrick, proving the idea isn't just theoretical.

Abandoned in December 2014 — nothing has moved in over a decade, and Rack itself has since shipped versions 2 and 3 that addressed some of these same problems. There is no gem release, no documentation beyond the README examples, and the gemspec points to a git source. The middleware API is explicitly described as out of scope and unfinished, meaning you'd be starting from scratch if you wanted to build on it. Realistically, this only has value as a read — you would never take a runtime dependency on it.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →