Получение имени хоста или IP в Ruby on Rails - PullRequest
76 голосов
/ 04 сентября 2008

Я нахожусь в процессе обслуживания приложения Ruby on Rails и ищу простой способ найти имя хоста или IP-адрес ящика, на котором я работаю (так как это виртуальная машина, и новые экземпляры могут иметь разные имена хостов или IP-адреса). Есть ли быстрый и простой способ сделать это в Ruby on Rails?

Редактировать: приведенный ниже ответ является правильным, но предоставленное Крейгом разъяснение полезно (см. Также предоставленную ссылку в ответе):

Код [ниже] НЕ делает подключить или отправить любые пакеты (для 64.233.187.99, который является Google). Поскольку UDP является протоколом без сохранения состояния, connect () просто делает системный вызов, который выясняет, как маршрутизировать пакеты на основании адреса и что интерфейс (и, следовательно, IP-адрес) это должно привязать к. addr () возвращает массив, содержащий семейство (AF_INET), локальный порт и локальный адрес (который это то, что мы хотим) сокета.

Ответы [ 12 ]

1 голос
/ 04 сентября 2008

Скорее всего, у вас будет несколько IP-адресов на каждом компьютере (127.0.0.1, 192.168.0.1 и т. Д.). Если вы используете * NIX в качестве своей ОС, я бы рекомендовал использовать hostname, а затем запустить DNS и посмотреть на это. Вы должны иметь возможность использовать / etc / hosts, чтобы определить локальное имя хоста для разрешения IP-адреса для этого компьютера. В Windows есть похожая функциональность, но я не использовал ее, так как Windows 95 была передовой.

Другим вариантом будет запуск службы поиска, такой как WhatIsMyIp.com . Эти парни ответят вам вашим реальным IP-адресом. Это также то, что вы можете легко настроить с помощью сценария Perl на локальном сервере, если хотите. Я полагаю, что приблизительно три строки кода для вывода удаленного IP-адреса из% ENV должны вас охватить.

0 голосов
/ 04 сентября 2008

try: Request.remote_ip

remote_ip ()

Определить исходящий IP-адрес. REMOTE_ADDR является стандартом, но будет Ошибка, если пользователь находится за прокси. HTTP_CLIENT_IP и / или HTTP_X_FORWARDED_FOR устанавливаются прокси, поэтому проверьте их, если REMOTE_ADDR является прокси. HTTP_X_FORWARDED_FOR может быть разделен запятой список в случае нескольких цепочек прокси; последний адрес, который не является доверенным исходный IP-адрес.

Обновление: К сожалению, я неправильно прочитал документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...