# Multple domains, same application, different CSS, some over-rides

**URL:** <https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209>\
**Category:** Rails\
**Created:** [November 26, 2008, 12:56pm UTC](https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209 "2008-11-26T12:56:39Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![icke](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/e19adc/32.png) [@icke](https://www.ruby-forum.com/u/icke)\
**Post date:** [November 26, 2008, 12:56pm UTC](https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209/1 "2008-11-26T12:56:39Z")

</div>

I am building a site that will have several different branded  
versions of the same site in order to do some SEO coverage. e.g  
[www.foo.com](http://www.foo.com),  
[www.foo.co.uk](http://www.foo.co.uk) and [www.bar.com](http://www.bar.com)

There are many discussions on sub-domains but I would like to come up  
with a solution to support the following:

1. multiple domains supported as virtual hosts on Apache acting as a  
proxy where I anticipate Rewrites to do maintenance pages, pick up  
cached pages etc.
2. Use Mongrels as the app server but they will access the same back-  
end Rails app running against the same database.
3. pick up the domain from the http header which will be used to  
determine which CSS to use, affiliate-id and where to store cached  
files from sort of look-up.
4. User only ever sees parameters in the url without any domain-  
specific information included i.e. [foo.co.uk&nbsp;-&nbsp;foo Resources and Information.](http://www.foo.co.uk/quote/read) not  
[foo.co.uk&nbsp;-&nbsp;foo Resources and Information.](http://www.foo.co.uk/foo/quote/read)
5. The session data will be domain specific.
6. Ability to over-ride views and come action controller classes by  
domain if necessary.

I am a little confused about routes.rb, apache rewrites and some of  
the available plug-ins. So for example, where should I parse the http  
header?

I would be grateful if someone could let me know if I am thinking  
about this in completely the wrong way. If not, are there any good  
information sources I should refer to? Should I post this to the  
depolyment list?

Thank you.

O.

---

<div class="post-metadata">

**Author:** ![icke](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/e19adc/32.png) [@icke](https://www.ruby-forum.com/u/icke)\
**Post date:** [November 26, 2008, 1:49pm UTC](https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209/2 "2008-11-26T13:49:35Z")

</div>

I think this is a very good topic and your question was detailed  
enough to kick start a good discussion. There is one question I have  
that would help continue:

Do you want to shared the same mongrep resources for all sub-domains?  
(or Passenger for that matter) This is a very important distinction  
for non-Rails people coming from PHP. Rails is like a JSP/Servlet site  
in that a Java/Ruby server instance must be running to work with  
Apache to respond to requests. But this means on a shared/VPS server  
resource usage, ie memory first and then competing for CPU.

O, please think about above and we’ll continue talking. Hopefully some  
other folks will chime in as this is something that I ponder as well  
as to best scenario.

I can answer a little of your questions:

If sharing mongrel processes is NOT a concern, then i’d recommend SVN  
externalizing or making the shared code part of a lib dir. Google “svn  
external” and read a little… And then having the rest of the rails  
app be normal for each subdomain. You could also use capistrano to  
deploy your app this way too. Have your shared code locally in dev  
symlinked to shared rails app code. There are many ways to skin this  
car.

#2 I see no issue with each app sharing the same database in the  
database.yml from a mysql perspective. This is what multiple mongrels  
on single Rails app do anyway. However, you must think about any app  
specific issues you may encounter as a result. Do you need a subdomain  
column for some records to keep this logic?

#3 ensure application.rb is not shared and thus you get your sessions  
for each app?

#4 as far as overriding controllers and actions by subdomain, let’s  
assume you have included a lib in that has your base shared actions.  
and your app includes those controllers in by default. I would think  
one could redefine or override those methods. Or make an  
exclude\_actions :some\_action as part of the lib or something similar  
and then you’d create your own action in an actual controller class in  
the sub-domain rails app.

I hope this begins a dialogue of some sort.

Hank

---

<div class="post-metadata">

**Author:** ![icke](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/e19adc/32.png) [@icke](https://www.ruby-forum.com/u/icke)\
**Post date:** [November 26, 2008, 7:03pm UTC](https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209/3 "2008-11-26T19:03:31Z")

</div>

On Nov 26, 4:40 pm, icke [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> #3 - even if application.rb is shared, cannot I over-ride the :session  
> path with the domain name in there to effecively partition the  
> sessions by domain. I am not sure where I would actually over-ride  
> this. environment.rb? application.rb? routes.rb (in particular The  
> same goes for over-riding the page\_cache\_directory so the pages are  
> cached to the document root of the apache virtual host.

The session is tracked via a cookie which will be per domain anyway.

Fred

---

<div class="post-metadata">

**Author:** ![icke](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/e19adc/32.png) [@icke](https://www.ruby-forum.com/u/icke)\
**Post date:** [November 26, 2008, 5:41pm UTC](https://www.ruby-forum.com/t/multple-domains-same-application-different-css-some-over-rides/154209/4 "2008-11-26T17:41:06Z")

</div>

Hank,

Thank you for your response.

I can deploy on a dedicated server so am not short of memory or cores  
but I am not expecting very high transactions volumes. So my  
preference would be to have a single (pack?) of mongrels handling the  
requests. Each domain would be handles by an Apache Virtual Host  
acting as a Mongrel proxy which would do a few things:

1. Set the document root.
2. redirect to maintenance pages if they are present
3. handle any cache hits
4. manipulate the headers if would like to (somewhere to put some  
other information if we want to pass data to the mongrel’s).

So effectively each of the Apache virtual servers will point to the  
same pack of mongrels defined in mongrel\_cluster.yml which will point  
to the same rails app.

#2 - I have designed the application so that it is really only one  
application so I would suspect I might be ok on this one, but  
certainly it would be a consideration for other applications.

#3 - even if application.rb is shared, cannot I over-ride the :session  
path with the domain name in there to effecively partition the  
sessions by domain. I am not sure where I would actually over-ride  
this. environment.rb? application.rb? routes.rb (in particular The  
same goes for over-riding the page\_cache\_directory so the pages are  
cached to the document root of the apache virtual host.

#4 - if there a way of testing if there is a domain specific version  
of a template or view and render that, if there isn’t use the shared  
version. I am not sure I am looking at this part correctly.

Thank you again for your help.

Owain.
