2010-08-04 3 views
0

J'essaie de créer une gemme et je voudrais avoir une fonctionnalité à l'intérieur qui prend l'adresse IP du client lors de son utilisation. Fondamentalement, il est juste comme les rails ActionController request.remote_ip, mais dans la gemme, je ne veux pas compter/compter sur les rails.Ruby - Obtenir l'adresse IP du client à l'intérieur d'une gemme

Y a-t-il un moyen d'avoir quelque chose comme ça en utilisant purement Ruby?

J'ai trouvé this, mais lorsqu'il est déployé à l'adresse du serveur de production, il obtient seulement l'ip du serveur et non le client un.

Toute aide serait appréciée à peu près

Merci beaucoup

+0

J'ai eu le même problème moi-même et suivi tout le chemin jusqu'au niveau de rack. Je n'ai jamais trouvé aucun moyen d'accéder à l'objet de requête en cours. Il semble que c'est lié à ApplicationController et qu'il ne semble pas y avoir moyen d'y accéder à partir d'une portée gem/plugin. Il semble que la seule solution est de faire passer l'IP à votre gemme par un contrôleur. – aNoble

+0

aNoble est correct, un gem arbitraire inclus dans une application Rails n'a pas de chemin "up" à l'objet avec le contexte de la demande du client. Si votre gemme nécessite que ces données remplissent l'objectif prévu, votre API doit être modifiée pour exiger que l'information soit transmise «en bas» dans votre gemme. Cela pourrait être explicitement (comme l'adresse IP/chaîne) ou implicitement (comme une référence à un objet, vous pouvez obtenir les données de la demande) – SciPhi

Répondre

-1

il est possible en raison de Ruby :) si vous développez une application web, vous devez utiliser en rack! c'est assez cool et simple sinon vous devrez faire face au module 'net'.

Questions connexes