Subclass Rack::Proxy and provide your rewrite_env and rewrite_response methods.
Example:
class Foo < Rack::Proxy
def rewrite_env(env)
env["HTTP_HOST"] = "example.com"
env
end
def rewrite_response(triplet)
status, headers, body = triplet
headers["X-Foo"] = "Bar"
triplet
end
end
See tests for more examples.
WARNING: Doesn't work with fakeweb/webmock. Both libraries monkey-patch net/http code.