clem_c_rock
2011-Apr-21 20:35 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-tp31452495p31452495.html
Sent from the RubyOnRails Core mailing list archive at Nabble.com.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en.
Prem Sichanugrist
2011-Apr-22 03:19 UTC
Re: Rails 3 Foreign Domain routing - cannot get this to work!
Please ask this question on the rubyonrails-talk mailing list, as this list
is for issues pertaining to the core framework.
And no, even that Passenger issue is *not* related to this mailing list.
On 22 เม.ย. 2554, at 3:35, clem_c_rock <clemrock@gmail.com> 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-tp31452495p31452495.html
Sent from the RubyOnRails Core mailing list archive at Nabble.com.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com.
To unsubscribe from this group, send email to
rubyonrails-core+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en.