2010-02-23 2 views
0

Je dirige actuellement tout le trafic sous-dominé et/ou nommé sur mon site vers un contrôleur appelé external et une méthode appelée handler.Routage de domaine/sous-domaine et utilisation de contrôleurs avec espaces de noms

Cela devient vraiment salissant et je voudrais le nettoyer. Je voudrais que toutes les demandes externes soient traitées de la manière normale des rails ": controller /: action /: id" Cependant, je veux ces contrôleurs dans leur propre dossier, donc il n'y a pas de chevauchement dans mes contrôleurs principaux. /controllers/external/controller_name.rb

Voici ce que j'ai jusqu'à présent:

not_domain_regex = Regexp.new('\A(?!(' + SiteConfig::domain.gsub('.', '\.') + '))', true) 
    is_domain_regex = Regexp.new('\A((' + SiteConfig::domain.gsub('.', '\.') + '))', true) 
    map.connect(
    '*path', 
    :controller => 'external', 
    :action => 'handler', 
    :conditions => { 
    :domain => not_domain_regex 
    } 
) 
    map.connect(
    '*path', 
    :controller => 'external', 
    :action => 'handler', 
    :conditions => { 
    :domain => is_domain_regex, 
    :subdomain => /([a-z0-9\-\_]{1,100}[^www])/i 
    } 
) 

Je suis complètement perdu. Je voudrais donc avoir une fonctionnalité qui ressemblerait à ceci:

map.connect(
    ':controller/:action/:id', 
    :namespace => 'external', 
    :conditions => { 
    :domain => not_domain_regex 
    } 
) 

Répondre