2009-09-25 28 views
30

soy muy nuevo en Ruby on Rails así que cuando he tratado de seguir el oficial "Introducción" rubí en los carriles tutorial, yo estaba un poco decepcionado porque salió mal muy rápidamente. Básicamente dijo:¿Por qué Ruby on Rails usa http://0.0.0.0:3000 en lugar de http: // localhost: 3000?

... navegue hasta http://localhost:3000. Debería ver la página de información predeterminada de Rails.

Pero cuando sigo las instrucciones, me sale

 
=> Rails 2.3.4 application starting on http://0.0.0.0:3000 

Después de probar ambas direcciones, sé que apunten a la misma cosa, pero puede alguien explicarme por qué Ruby on Rails utiliza http://0.0.0.0:3000 vez de http://localhost:3000?

¿Hay una manera de tener siempre el uso del servidor localhost WEBbrick?

Respuesta

49

Localhost significa literalmente "el anfitrión local", generalmente identificado por 127.0.0.1 y todo el tráfico a esa dirección se encamina a través de una interfaz de bucle invertido. Si su servidor web está escuchando conexiones en 127.0.0.1, esto significa que solo acepta solicitudes provenientes del mismo host.

0.0.0.0 significa que Rails está escuchando en todas las interfaces, no solo en la interfaz de bucle invertido.

+7

Para configurar WEBrick para escuchar solo en localhost, lo que significa que las conexiones externas se ignoran: script/server --binding = 127.0.0.1 – tadman

+5

FYI, especificando el enlace a 127.0.0.1 al arrancar WEBrick para mí hizo que mi conexión de rieles locales (y, por lo tanto, conexiones web externas también) fuera mucho más rápida. Entonces, si su conexión local es lenta, recomiendo lo que sugirió @tadman. En Rails 3, su servidor ** rails --binding = 127.0.0.1 ** –

15

0.0.0.0 significa todas las interfaces. Incluyendo 127.0.0.1 a.k.a. localhost.

0

En realidad, los rieles tienen diferentes opciones de configuración si escucha algo específico o todas las interfaces.

0

Sólo para que todo el mundo sabe, mi navegador Firefox muestra correctamente el servidor alojado localmente si accedo http://localhost:3000/ pero no muestra cuando intento acceder a la http://0.0.0.0:3000/ según lo recomendado por Ruby. Claramente, en cierto sentido, no son equivalentes.

Estoy en Windows por cierto.

+0

'0.0.0.0' no es una dirección IP a la que pueda acceder realmente utilizando un cliente. Es simplemente un atajo para que la llamada de enlace del sistema use _todas las direcciones IP disponibles. –

0

Para aquellos de nosotros usando Nitrous.io envrionment servidor virtual para el desarrollo, creo que tenemos para unirse a 0.0.0.0 ya que no hay localhost per se.

0

Si desea localhost, de una manera rápida consiste en especificar la unión de rails s -blocalhost (y el puerto con -pNNNN, más opciones con rails s --help).

Mi servidor empezó a correr de forma predeterminada en localhost por razones que se investigue. Como resultado, lvh.me dejó de funcionar, lo que me impide especificar subdominios (p. Ej .: www.lvh.me:3000).

I "resuelto" esta especificación de la unión:

rails s -b0.0.0.0 # will work with lvh.me 
0

reinicia el sistema operativo que funciona para mí. (En Mac v 10.12)