Due to circumstances beyond my control, my production Camping site appears at mysite.example.com/mysite
. I'm pretty sure this is a common Apache / Passenger configuration issue, and I'm not interested in how to fix it right now because the server is out of my control. Suffice to say, the controller for "/" points there and I can't change that any time soon.
Now, for a long time, this wasn't an issue, because R(MyIndexController)
points to the correct place. However, I serve my site's CSS using a Rack::Static
call to make $SITE_ROOT/public accessible. This means that the stylesheet is at mysite.example.com/mysite/css/style.css
. Here's where the problem comes in: the Camping URL()
method, when called in my layout, gives http://mysite.example.com
, not http://mysite.example.com/mysite
. So I can't get it to point to the /css subdirectory, because it's missing a "hop" in the middle. When I run rackup locally, everything is fine (because this file is at localhost:8080/css/style.css
), but on the production server I don't know how to fix it.
My question: is there another method (maybe directly from Rack?) that I should be calling instead? I really want to avoid hardcoding it, and/or having a hack to determine whether I'm running locally (for debug) or in production, for every rendering of the layout.
ETA: OK, this gets stranger. Obviously I've abstracted out some of the actual details above, part of which I think I "over-scrubbed". The "top level" URL is actually more akin to /mysite/rest
(the developer-centric HTML presentation of our RESTful interface), as opposed to /mysite/management
(accounts) or /mysite/ui
(JQuery'd / "nice" UI). These are set up in our config.ru, via run Rack::URLMap.new(Hash['/rest' => RestModule, '/ui' => PrettyInterfaceModule, '/management' => UserManagerModule]
, etc.
So in answer to the comment below, R(Index), from a view in the RestModule, actually returns /mysite/rest/
. As an example, I have a "home" link in the layout, which looks like a :href=>R(Index)
, and generates code that looks like <a href="/mysite/rest/">
. The server is configured to serve files from ./public directly at the "site root", so ./public/css/style.css
actually does apppear at http://mysite.example.com/mysite/css/style.css
, as noted previously. It's that link that I'm having trouble automatically generating, and it's because of the Rack::URLMap that I thought I may have to rely on a native Rack method (not a Camping abstraction) to locate this resource.