Using Rack Middleware for good and evil
So we all know that Rack is awesome, and that we can use Rack::Middleware for all sorts of things: debugging, caching and a whole host more.
What all these have in common (apart from maybe Rack::Evil) is that they’re all helpful. They all make writing Rack applications easier. Not my Middleware though.
Introducing Rack::Shuffler
module Rack
class Shuffler
def initialize(app)
@app = app
@responses = []
end
def call(env)
@responses << @app.call(env)
@responses[rand(@responses.size)]
ensure
@responses.delete_at(rand(@responses.size)) if @responses.size > 100
end
end
end
I suggest you add it to a colleague’s app late on a Friday afternoon, and see how long it takes to drive them to insanity.