How do I use Rack::Proxy within Rails to proxy requests to a specific path to another app

proxy, rack, reverse-proxy, routes, ruby-on-rails-3.1

Solution

Figured it out.

lib/proxy.rb

require 'rack-proxy'
class Proxy < Rack::Proxy
    def initialize(app)
        @app = app
    end

    def rewrite_env(env)
        # do magic in here
    end
end

config/application.rb

config.middleware.use "Proxy"

Problem

I found this great blog post on how to use `Rack::Proxy` as a separate proxy app. The article explains how he uses `Rack::Proxy` to proxy requests to `http://localhost:3000` to an app on port `3001` and requests to `http://localhost:3000/api` to an app on port `3002`. I want to do the same thing, but I do not want to create a separate proxy app. Instead, I want my main Rails app to proxy requests to `/blog` to a different app. Blog Post: http://livsey.org/blog/2012/02/23/using-rack-proxy-to-serve-multiple-rails-apps-from-the-same-domain-and-port/

Original source