Получить имя хоста из контроллера Rails - PullRequest
37 голосов
/ 05 февраля 2010

Я пытаюсь получить имя хоста компьютера, на котором запущено приложение rails, от контроллера.

Каков наилучший способ сделать это, учитывая, что он должен работать как на Windows, так и на Linux?

Ответы [ 4 ]

81 голосов
/ 23 июня 2010

Все, что вам нужно сделать, это посмотреть на объект запроса в вашем контроллере:

request.host_with_port

или если вы не хотите порт, просто

request.host
28 голосов
/ 05 февраля 2010

Всегда есть:

require 'socket'
...
Socket.gethostname

У меня нет под рукой Windows-бокса, чтобы проверить это, но в документах не упоминается, что он * специфичен для nix.

Примечание. Инструкция require не обязательна для Rails 4 и, возможно, для других версий Rails. Это требуется, если вы делаете обычный Ruby без Rails.

6 голосов
/ 06 февраля 2010

Используйте галочки и команду hostname

current_host = `hostname`

Это отправляет команду в оболочку и возвращает имя хоста. Работает как минимум: Debian Linux, Windows, Solaris.

0 голосов
/ 26 октября 2018

Если вам нужен полный путь домена от протокола к порту, попробуйте:

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
...