Obtener el nombre de host del controlador Rails


Estoy intentando obtener el nombre de host de la máquina en la que se está ejecutando una aplicación rails desde el controlador.

¿Cuál sería la mejor manera de hacer esto teniendo en cuenta que debería funcionar tanto en Windows como en Linux?

Author: sth, 2010-02-05

3 answers

Siempre hay:

require 'socket'
...
Socket.gethostname

No tengo ningún cuadro de Windows a mano con el que probar esto, pero los documentos no mencionan que sea *nix específico.

Nota: La instrucción require no es necesaria para Rails 4, y probablemente también para otras versiones de Rails. Se requiere si está haciendo Ruby sin Rails.

 24
Author: Wayne Conrad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-23 19:27:15

Todo lo que tienes que hacer es mirar el objeto request en tu controlador:

request.host_with_port

O si no quieres el puerto, solo

request.host
 79
Author: Wilhelm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-22 23:03:53

Use backsticks y el comando hostname

current_host = `hostname`

Esto envía el comando al shell, y devuelve el nombre de host. Funciona al menos en: Debian Linux, Windows, Solaris.

 6
Author: btelles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-06 03:46:16