Rails 3 Foreign Domain routing - cannot get this to work!

Hello,
I’m trying to build an app (mysuperapp.com) that allows users to
create an account in which a default subdomain (IE:
joeshmoe.mysuperapp.com) will be
created as their homepage. In their profile settings, I also want to
give them the ability to add their own domain name so their homepage now
can be joeshmoe.com. I know this is possible in rails w/ plugins like
subdomainfu and w/out plugins in rails3. I’ve searched countless
websites on the subject and I’m attempting to build an app based on this
example:

http://glac-ialis.postmodo.com/ (take out the hypen if you want to go
to this link - caused a spam alert)

so, as in this example, I’ve created lib/personalized_domain.rb

# lib/personalized_domain.rb
class PersonalizedDomain
  def self.matches?(request)
    case request.host
    when 'www.#{APP_CONFIG[:domain]}', '#{APP_CONFIG[:domain]}', nil
      false
    else
      true
    end
  end
end

and in my routes I have this:

# config/routes
constraints(PersonalizedDomain) do
  namespace :personalized, :path => '/' do
    root :to => "projects#show"
    resource :project
  end
end


root :to => "home#index"

in my model I have:

# app/models/project.rb
before_validation :cache_domain

validates_uniqueness_of :subdomain,
                        :cached_domain
validates_uniqueness_of :cname_alias,
                        :allow_blank => true
validates_presence_of   :subdomain,
                        :cached_domain
validates_exclusion_of  :subdomain,
                        :in => %w(admin blog),
                        :message => "is taken"

def cache_domain
  self.cached_domain = if self.cname_alias.blank?
    "#{self.subdomain}.#{APP_CONFIG[:domain]}"
  else
    "#{self.cname_alias}"
  end
end

as per the example, my base controller:

# app/controllers/personalized/base_controller.rb
class Personalized::BaseController < ApplicationController
  before_filter :get_project

protected
  def get_project
    @project = Project.first(:conditions => {
        :cached_domain => request.host
    })
  end
end

One thing I noticed, in PersonalizedDomain, was that if I put a debug
statement in the self.matches? method as such:

class PersonalizedDomain
  def self.matches?(request)
    Rails.logger.info("****(PersonalizedDomain::self.matches?)-->>APP_CONFIG[:domain]:
#{APP_CONFIG[:domain]}")
    case request.host
    when 'www.#{APP_CONFIG[:domain]}', '#{APP_CONFIG[:domain]}', nil
      false
    else
      true
    end
  end
end

the debug statement never get’s executed.

Thanks for any help

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs