2013-04-20 12 views
9

Ho un'applicazione per le binari. Se lo avvio con rails s (porta 3000), funziona perfettamente sia sulla mia macchina che su ogni dispositivo sulla mia rete locale tramite l'indirizzo IP (192.168.0.3 nel mio caso).
Ho un'applicazione sinatra. Se lo avvio con ruby app.rb (porta 4567), funziona perfettamente sulla mia macchina, ma non è accessibile da altri dispositivi sulla mia rete locale.Impossibile accedere all'app sinatra tramite la rete locale

enter image description here

Sia applicazione utilizzare Sottile come un application server.

È qualcosa correlato a come funziona sinatra?

+0

possibile duplicato del [Impossibile accedere al server Sinatra locale da un altro computer sulla stessa rete] (http://stackoverflow.com/ domande/15685528 ​​/ can not-access-local-sinatra-server-da-un altro-computer-sulla-stessa rete) – matt

risposta

30

Prova ruby app.rb -o 0.0.0.0 o ruby app.rb -e production. O dovrebbe funzionare.

8

Lasciatemi aggiungere ulteriori informazioni alla risposta di Ivan. Sinatra di README sulla riga di comando dice:

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 il documento l'host predefinito è 0.0.0.0, ma ho ancora specificare un "-o 0.0.0.0" proprio come Ivan ha detto. Altrimenti non è possibile accedere al server dall'esterno del server. Che strano!

+0

Il documento non è corretto sull'host predefinito, almeno nella modalità di sviluppo. –

6

Voglio solo aggiungere alla risposta di Ivan e chiarimenti di Robert.

Per impostazione predefinita, sinatra viene eseguito in modalità di sviluppo, non in modalità di produzione. In modalità sviluppo, l'host predefinito a cui sinatra si collegherà è "localhost", ovvero solo la macchina locale può interagire con esso.

Una volta specificato '-e produzione' la webapp di sinatra è in esecuzione in modalità produzione, dove l'host predefinito a cui si lega è 0.0.0.0, il che significa che può interagire con tutti gli altri.

In alternativa, se si vuole rimanere in fase di sviluppo, specificare '0.0.0.0 -o'

Problemi correlati