Получить имя хоста от контроллера Rails
-
18-09-2019 - |
Вопрос
Я пытаюсь получить имя хоста машины, на которой работает рельсовое приложение, с контроллера.
Как лучше всего это сделать, учитывая, что он должен работать как в 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