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
[code]
# 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
[/code]
and in my routes I have this:
[code]
# config/routes
constraints(PersonalizedDomain) do
  namespace :personalized, :path => ''/'' do
    root :to => "projects#show"
    resource :project
  end
end
root :to => "home#index"
[/code]
in my model I have:
[code]
# 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
[/code]
as per the example, my base controller:
[code]
# 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
[/code]
One thing I noticed, in PersonalizedDomain,  was that if I put a debug
statement in the self.matches? method as such:
[code]
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
[/code]
the debug statement never get''s executed.
Thanks for any help
-- 
Posted via http://www.ruby-forum.com/.
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
clem_c_rock
2011-Apr-22  05:25 UTC
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://glacialis.postmodo.com/
so, as in this example, I''ve created lib/personalized_domain.rb
[code]
# 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
[/code]
and in my routes I have this:
[code]
# config/routes
constraints(PersonalizedDomain) do
  namespace :personalized, :path => ''/'' do
    root :to => "projects#show"
    resource :project
  end
end
root :to => "home#index"
[/code]
in my model I have:
[code]
# 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
[/code]
as per the example, my base controller:
[code]
# 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
[/code]
One thing I noticed, in PersonalizedDomain,  was that if I put a debug
statement in the self.matches? method as such:
[code]
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
[/code]
the debug statement never get''s executed.
Thanks for any help
-- 
View this message in context:
http://old.nabble.com/Rails-3-Foreign-Domain-routing---cannot-get-this-to-work%21-tp31454390p31454390.html
Sent from the RubyOnRails Users mailing list archive at Nabble.com.
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
clem_c_rock
2011-Apr-29  14:48 UTC
Re: Rails 3 Foreign Domain routing - cannot get this to work!
Here''s an update - I did figure out why my custom constraint
wasn''t working
correctly and here''s the changes I made:
In PersonalizedDomain I changed the self.matches? method from a class method
to an instance method as such:
[code]
# lib/personalized_domain.rb
class PersonalizedDomain
  def matches?(request)
    case request.host
    when "www.#{APP_CONFIG[:domain]}",
"#{APP_CONFIG[:domain]}", nil
      false
    else
      true
    end
  end
end
[/code]
and in routes I did this:
[code]
constraints(PersonalizedDomain.new) do
      resources :posts
      resources :personalized
  end
[/code]
clem_c_rock wrote:> 
> 
> 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://glacialis.postmodo.com/
> 
> so, as in this example, I''ve created lib/personalized_domain.rb
> 
> [code]
> # 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
> [/code]
> 
> 
> and in my routes I have this:
> 
> [code]
> # config/routes
> constraints(PersonalizedDomain) do
>   namespace :personalized, :path => ''/'' do
>     root :to => "projects#show"
>     resource :project
>   end
> end
> 
> 
> root :to => "home#index"
> [/code]
> 
> 
> in my model I have:
> 
> [code]
> # 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
> [/code]
> 
> 
> as per the example, my base controller:
> [code]
> # 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
> [/code]
> 
> 
> One thing I noticed, in PersonalizedDomain,  was that if I put a debug
> statement in the self.matches? method as such:
> 
> [code]
> 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
> [/code]
> 
> the debug statement never get''s executed.
> 
> Thanks for any help
> 
-- 
View this message in context:
http://old.nabble.com/Rails-3-Foreign-Domain-routing---cannot-get-this-to-work%21-tp31454390p31506127.html
Sent from the RubyOnRails Users mailing list archive at Nabble.com.
-- 
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.