J'ai été incapable de trouver une solution viable à ce problème, en dépit de plusieurs autres questions d'ici et d'ailleurs. Il semble probable que cette question n'a pas été répondu pour Rails 3, donc voilà:
J'ai une application qui permet aux utilisateurs de créer leur propre sous-domaine qui contient leur instance de l'application. Alors que dans les Rails 2 vous avez été le mieux servi en utilisant le sous-domaine-fu gem, dans la version 3, c'est beaucoup plus simple, comme par le Railscast -- http://railscasts.com/episodes/221-subdomains-in-rails-3.
Que de bonnes choses, mais je veux aussi offrir la possibilité pour les utilisateurs d'associer leur propre nom de domaine avec leur compte. Ainsi, alors qu'ils pourraient avoir http://userx.mydomain.comj'aimerais choisir d'avoir http://userx.com associés ainsi.
J'ai trouvé quelques références de le faire en 2 Rails, mais ces techniques ne semblent pas fonctionner (en particulier celui-ci: http://feefighters.com/devblog/2009/01/21/hosting-multiple-domains-from-a-single-rails-app/).
Quelqu'un peut-il recommander une façon d'utiliser les routes à accepter l'arbitraire d'un domaine et de le transmettre à un dispositif de commande afin que je puisse afficher le contenu approprié?
Merci d'avance,
Aaron.
Mise à jour: j'ai reçu plus d'une réponse maintenant, grâce à Leonid du temps de réponse, et un regard neuf sur le code. Il requiert, en définitive, une outre le sous-domaine de code que j'ai utilisé (à partir de la Railscast solution), puis en ajoutant un peu de routes.rb. Je ne suis pas tout le chemin là encore, mais je tiens à poster ce que j'ai jusqu'ici.
Dans lib/sous-domaine.rb:
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != "www"
end
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain != "mydomain.com"
end
end
J'ai ajouté de la deuxième classe à l'imitation de la première, qui est connu de travail. J'ai simplement ajouter une condition qui garantit que les entrants de domaine n'est pas celui pour lequel je suis d'hébergement du site principal.
Cette classe est utilisée dans les circuits.rb:
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
Ici, je suis en ajoutant le sous-domaine existant code (encore une fois, ça fonctionne très bien) avec une strophe à vérifier pour le Domaine. Si ce serveur répond à ce domaine et ce n'est pas celui sous lequel le site principal fonctionne, en avant pour le contrôleur spécifié.
Et même si cela semble fonctionner, je n'ai pas assez de toute la chose encore, mais je pense que ce problème a été résolu.