Deploying rails as a sub-url

Hello,

I want to deploy a rails app as a sub-url to an existing site.

So, I’m using ProxyPass in apache to proxy urls for /foo to localhost
on port
10000, where mongrel is listening.

Unfortunately, the helper functions in Rails like link_to seem to
insist on
providing absolute urls (ie. /admin). That will break with this
scheme, since
the /foo in the URL won’t be maintained.

What is recommended for a deployment like this?

Thanks,
Mike

msoulier wrote:

providing absolute urls (ie. /admin). That will break with this
scheme, since
the /foo in the URL won’t be maintained.

What is recommended for a deployment like this?

Thanks,
Mike

You can use --prefix with Mongrel to specify the subdirectory you want
to run Rails under. E.g.:

mongrel_rails start -d -p 10000
-a 127.0.0.1
-e production
–prefix /foo


Michael W.

On Apr 6, 12:40 am, Michael W. [email protected] wrote:

You can use --prefix with Mongrel to specify the subdirectory you want
to run Rails under. E.g.:

mongrel_rails start -d -p 10000
-a 127.0.0.1
-e production
–prefix /foo

Cool, that works! I had a partially working solution by updating
routing with the prefix, but that broke access to the public
directory.

Thanks!

Mike

Mike, any chance you could post the relevant code from your httpd.conf
file?

I’ve been stumbling around, trying to figure this out, for a while now,
and I’ve yet to get multiple sites working on one box, without having
work done on DNS tables (which is not a possibility in this case).

With a lot of help, I eventually got RoR working for a single site
(OSX apache2 final-stage setup hints? - Rails - Ruby-Forum) using ProxyPass.

However, this ProxyPass method seems to be the wrong approach for
multiple sites on one box
(Multiple virtual host? - Rails - Ruby-Forum) since it demands the
changing of DNS tables, which I lack permission to do. [Commercial
hosting is not a solution for me.]

Dan.

Dan K. wrote:

However, this ProxyPass method seems to be the wrong approach for
multiple sites on one box
(Multiple virtual host? - Rails - Ruby-Forum) since it demands the
changing of DNS tables, which I lack permission to do. [Commercial
hosting is not a solution for me.]

What’s the problem? In httpd.conf you just need something like this:

ProxyPass /site1 http://localhost:9000/site1
ProxyPassReverse /site1 http://locahost:9000/site1

ProxyPass /site2 http://localhost:9001/site2
ProxyPassReverse /site2 http://locahost:9001/site2

And to launch each Mongrel you need something like (run from inside each
app directory):

mongrel_rails start -d -p 9000
-a 127.0.0.1
-e production
–prefix /site1 \

mongrel_rails start -d -p 9001
-a 127.0.0.1
-e production
–prefix /site2 \


Michael W.

The problem is that the images don’t show up, if I do as above.

On Apr 6, 8:20 am, Dan K. [email protected]
wrote:

Mike, any chance you could post the relevant code from your httpd.conf
file?

It’s just

ProxyPass /foobar http://127.0.0.1:10000/foobar
ProxyPassReverse /foobar http://127.0.0.1:10000/foobar

Unfortunately it’s not enough, since proxypass only fixes http headers
and not page contents. The link_to function and it’s brothers all seem
to want to use absolute urls instead of relative ones, a terrible
practice. I tried turning off that behaviour in the default html
options but it didn’t seem to help.

In the end I used the mongrel option suggested and it’s working great.
Still, I find it sad that Rails suffers from the same broken
assumptions about deployment as jakarta-tomcat.

changing of DNS tables, which I lack permission to do. [Commercial
hosting is not a solution for me.]

It now works for me with a combination of proxypass, and mongrel’s –
prefix option. Should work for you.

Mike