2010-02-05 24 views
34

Estoy tratando de obtener el nombre de host de la máquina desde la cual se está ejecutando una aplicación de rieles desde el controlador.Obtener el nombre de host del controlador de Rails

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

Respuesta

22

Siempre hay:

require 'socket' 
... 
Socket.gethostname 

no tengo caja práctica de Windows con el que probar esto, pero los documentos no hacen mención de que sea * nix específica.

6

Use acentos abiertos y el comando hostname

current_host = `hostname` 

Esto envía el comando de la cáscara, y devuelve el nombre de host. Funciona al menos: Debian Linux, Windows, Solaris.

+5

Si vamos a hacer esto recomendaría almacenar en caché el valor a través de un inicializador, y no hacer un tenedor() para cada solicitud. –

+0

Funciona en Mac OS también. – calasyr

77

Todo lo que tiene que hacer es mirar el objeto de la petición en su controlador:

request.host_with_port 

o si no desea que el puerto, justo

request.host 
+1

Esto es útil si está tratando de analizar las URL y demás, pero creo que esta pregunta en particular se refiere al nombre real de esa máquina o sistema operativo. – taelor

+0

esto no lo ayudará si quiere obtener el nombre interno del host – phoet

Cuestiones relacionadas