Bug in AbstractRequest.path()?

ActionController::Routes.recognize() to obtain a URI for matching.

If ActionController::AbstractReqeust:;relative_url_root is non-zero
length,
then the AbstractRequest::path chops that many characters off the
request
URI before returning the new URI.

The problem is that this chopping happens whether or not the URI begins
with
the relative URL.

I would expect the method to test whether the incoming URI really begins
with the relative URL root before removing that many characters…

Anyhow, the check should happen in line 5:

1 def path
2 path = (uri = request_uri) ? uri.split(’?’).first : ‘’
3
4 # Cut off the path to the installation directory if given
5 root = relative_url_root
6 path[0, root.length] = ‘’ if root
7 path || ‘’
8 end

I’ve solved my original problem, now that I understand what’s happening
in
Routes. But the behavior made putting multiple rails apps behind a
single
reverse proxy a challenge at first. Now that I’ve gotten my
sections working I realize I could have used multiple
entries
to perform the mapping, and not had to worry about using a
relative_url_root
at all…

But still, I think the behavior of AbstractRequest::path is broken.