2011-12-14 2 views
1

J'écris un OmniAuth dynamic provider et dans le rappel, j'ai besoin d'obtenir le nom d'hôte actuel (l'application fonctionne dans plusieurs noms d'hôtes différents). Je n'ai pas l'objet de requête, juste un gros hachage d'env. J'ai trouvé que ce hash contient une entrée, env ["SERVER_NAME"], avec le nom d'hôte, mais je ne suis pas sûr que ce soit une entrée stable ou cela peut changer selon le serveur web ou ce genre de choses.Quelle est la meilleure façon d'obtenir le nom d'hôte du hachage d'env dans une application Rails?

J'ai également trouvé le nom d'hôte enter dans env ["action_dispatch.routes"] dans la variable membre @host.

Des idées quelle est la meilleure ou la façon canonique d'obtenir le nom d'hôte à ce stade?

Répondre

3

L'application n'est pas encore en production, mais jusqu'à présent, la version bêta privée, en utilisant env["SERVER_NAME"] a fonctionné comme un charme.

1

Dans un contrôleur de rails, vous pouvez simplement utiliser:

request.host 

Bien que je ne suis pas sûr que les sources quelque chose de différent de ce que vous avez déjà regardé. Cela fonctionne bien pour moi dans une application Rails 3.1 sur laquelle je travaille.

+0

Je ne suis pas un contrôleur Rails, j'implémente la méthode d'installation pour un fournisseur dynamique OmniAuth. – Pablo

+0

Je ne l'ai pas essayé moi-même, mais je suggère d'essayer de référencer request.host dans votre code là-bas et de voir si cela fonctionne. Je dois admettre que je ne suis pas sûr quelles variables sont créées dans Rack pour ce processus. – agmcleod

+0

ouais, j'ai essayé ça, ça n'a pas marché. Pour l'instant j'utilise env ["SERVER_NAME"] mais je n'ai pas encore testé en production. – Pablo

Questions connexes