Get ordered list of middleware in a generic rack application?

middleware, rack, rake, ruby

Solution

This will return a list of all the middleware for a rack application:

def middleware_classes(app)
  app.instance_variable_get(:@use).map{|middleware| middleware.call.class.name }
end

app = Rack::Builder.parse_file('config.ru').first; nil # trailing nil to avoid paging in an interactive console
p middleware_classes(app)

Problem

The functionality I am looking for is similar to the `rake middleware` command in Rails, except for a generic rack application.

Original source