2013-04-20 11 views
9

Mam aplikację szyn. Jeśli uruchomię go z rails s (port 3000), działa on idealnie zarówno na moim komputerze, jak i na każdym urządzeniu w mojej sieci lokalnej za pośrednictwem adresu IP (192.168.0.3 w moim przypadku).
Mam aplikację Sinatra. Jeśli uruchomię go z ruby app.rb (port 4567), działa on doskonale na moim komputerze, ale nie jest dostępny z innych urządzeń w mojej sieci lokalnej.Nie można uzyskać dostępu do aplikacji Sinatra przez sieć lokalną

enter image description here

Zarówno aplikacja używać Cienki jako serwer aplikacji.

Czy jest to coś związanego z tym, jak działa sinatra?

+0

możliwe duplikat [Nie można uzyskać dostępu do lokalnego serwera Sinatra z innego komputera w tej samej sieci] (http://stackoverflow.com/ pytania/15685528 ​​/ can-access-local-sinatra-server-from-another-computer-on-same-network) – matt

Odpowiedz

30

Wypróbuj ruby app.rb -o 0.0.0.0 lub ruby app.rb -e production. Powinno działać.

8

Pozwolę sobie dodać więcej informacji do odpowiedzi Ivana. Sinatry README na linii poleceń mówi:

Sinatra applications can be run directly: 

ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s 
HANDLER] 

Options are: 

-h # help 
-p # set the port (default is 4567) 
-o # set the host (default is 0.0.0.0) 
-e # set the environment (default is development) 
-s # specify rack server/handler (default is thin) 
-x # turn on the mutex lock (default is off) 

Per dokument domyślny host jest 0.0.0.0, ale nadal trzeba określać „-o 0.0.0.0” podobnie jak Ivan powiedział. W przeciwnym razie nie można uzyskać dostępu do serwera spoza komputera serwera. Jak dziwnie!

+0

Dokument jest niepoprawny co do domyślnego hosta, przynajmniej w trybie deweloperskim. –

6

Po prostu chcę dodać do odpowiedzi Ivana i wyjaśnienia Roberta.

Domyślnie sinatra działa w trybie programowania, a nie w trybie produkcji. W trybie deweloperskim domyślnym hostem, z którym związany jest sinatra, jest "localhost", co oznacza, że ​​tylko lokalna maszyna może z nim współdziałać.

Po określeniu "produkcji" twoja aplikacja webat Sinatra działa w trybie produkcji, gdzie domyślnym hostem, z którym się wiąże jest 0.0.0.0, co oznacza, że ​​może wchodzić w interakcje ze wszystkimi innymi.

Ewentualnie, jeśli chcą pozostać w rozwoju, określenie „-o 0.0.0.0”

Powiązane problemy