Вопрос

Я пытаюсь получить имя хоста машины, на которой работает рельсовое приложение, с контроллера.

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

Это было полезно?

Решение

Всегда есть:

require 'socket'
...
Socket.gethostname

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

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

Другие советы

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

request.host_with_port

или если вам не нужен порт, просто

request.host

Используйте обратные кавычки и команду hostname

current_host = `hostname`

Это отправляет команду в оболочку и возвращает имя хоста.Работает как минимум:Дебиан Линукс, Винда, Солярис.

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

full_domain_path = request.env['rack.url_scheme'] + '://' + request.host_with_port
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top