I have a Rails 2 app that serves multiple domains. That is, http://domainA.com and http://domainB.com are both served by the same Rails app. When I launch these manually, I specify which site I want to see by passing a site
variable: site=domainB ruby script/server
.
I'd like to use Pow so that I can access both sites via http://domainA.myapp.dev and http://domainB.myapp.dev (I'd also be happy with http://domainA.dev and http://domainB.dev if that's easier).
I can do this manually by adding export site="domainB"
to my .powrc
file, and editing that by hand (then doing touch tmp/restart.txt
) each time I want to switch sites ... I'd prefer something a bit more automatic, though. I'm thinking something like the equivalent of subdomain == domainA ? export site="domainA" : export site="domainB"
within the .powrc
file.
I figured out how to do this, and wrote a blog post about it here. This is the gist of how it's done...
I configured my
before_filter
to get the domain that's being accessed, and to use that throughout the Rails app. If the site is being accessed via the standard Rails app, it won't have a domain (it would just belocalhost
). In that case, thebefore_filter
looks for thesite
variable being passed at the command line (and if that's not passed, then it uses a default site).The whole thing is actually done within Rails itself, and the only involvement that Pow has is that there has to be a symlink for each site being served by the Rails app.
The symlinks must also match the
request.domain
that's being checked in thebefore_filter
. So, in this example there would be two symlinks -domainA
anddomainB
.