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
<Location>
sections working I realize I could have used multiple <VirtualHost>
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.