# File lib/pry-rails/commands/show_middleware.rb, line 20
  def process
    # assumes there is only one Rack::Server instance
    server = nil
    ObjectSpace.each_object(Rack::Server) do |object|
      server = object
    end

    middlewares = []

    if server
      stack = server.instance_variable_get("@wrapped_app")
      middlewares << stack.class.to_s

      while stack.instance_variable_defined?("@app") do
        stack = stack.instance_variable_get("@app")
        # Rails 3.0 uses the Application class rather than the application
        # instance itself, so we grab the instance.
        stack = Rails.application  if stack == Rails.application.class
        middlewares << stack.class.to_s  if stack != Rails.application
      end
    else
      middleware_names = Rails.application.middleware.map do |middleware|
        # After Rails 3.0, the middleware are wrapped in a special class
        # that responds to #name.
        if middleware.respond_to?(:name)
          middleware.name
        else
          middleware.inspect
        end
      end
      middlewares.concat middleware_names
    end
    middlewares << Rails.application.class.to_s
    print_middleware middlewares.grep(Regexp.new(opts[:G] || "."))
  end