2013-04-20 15 views
9

Ich habe Anwendung Schienen. Wenn ich es mit rails s (Port 3000) starte, funktioniert es perfekt auf meinem Rechner und jedem Gerät in meinem lokalen Netzwerk über die IP-Adresse (in meinem Fall 192.168.0.3).
Ich habe Sinatra-Anwendung. Wenn ich es mit ruby app.rb (Port 4567) starte, funktioniert es perfekt auf meinem Computer, aber es ist nicht von anderen Geräten in meinem lokalen Netzwerk zugänglich.Zugriff auf Sinatra-App über das lokale Netzwerk nicht möglich

enter image description here

Beide Anwendung als App-Server Thin verwenden.

Ist etwas mit Sinatra verwandt?

+0

möglich Duplikat [nicht lokalen Sinatra-Server von einem anderen Computer auf demselben Netzwerk zugreifen kann] (http://stackoverflow.com/ Fragen/15685528 ​​/ Can not-Access-Local-Sinatra-Server-von-einem anderen-Computer-auf-same-Netzwerk) – matt

Antwort

30

Versuchen Sie ruby app.rb -o 0.0.0.0 oder ruby app.rb -e production. Entweder sollte funktionieren.

8

Lassen Sie mich einige weitere Informationen zu Ivan Antwort hinzufügen. Sinatras README auf der Kommandozeile sagt:

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) 

pro Dokument die Standard-Host 0.0.0.0 ist, aber ich habe noch zu spezifizieren ein „-o 0.0.0.0“ wie sagte Ivan. Andernfalls kann der Server nicht von außerhalb des Server-Computers zugegriffen werden. Wie merkwürdig!

+0

Das Dokument ist in Bezug auf den Standard-Host, zumindest im Entwicklungsmodus falsch. –

6

Ich möchte nur zu Ivan Antwort und Roberts Klärung hinzufügen.

Standardmäßig läuft Sinatra im Entwicklungsmodus, nicht im Produktionsmodus. Im Entwicklungsmodus ist der Standard-Host, an den sinatra bindet, 'localhost', was bedeutet, dass nur der lokale Rechner mit ihm interagieren kann.

Sobald Sie '-e Produktion' angegeben haben, wird Ihre sinatra Webanwendung im Produktionsmodus ausgeführt, in dem der Standardhost 0.0.0.0 ist, was bedeutet, dass sie mit allen anderen interagieren kann.

Alternativ, wenn Sie in der Entwicklung bleiben wollen, geben Sie ‚-o 0.0.0.0‘

Verwandte Themen