2015-01-04 16 views
7

Nuovo progetto Rails generato 4.2.0. Ran rails s, comportati come previsto utilizzando WEBrick:Perché Puma è vincolante solo per tcp6? (via `rails s`)

[email protected]:~$ netstat -nlpt 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp  0  0 127.0.0.1:3000   0.0.0.0:*    LISTEN  27158/ruby2.1 
tcp6  0  0 ::1:3000    :::*     LISTEN  27158/ruby2.1 

Aggiunto puma a Gemfile, corse bundle, quindi rails s di nuovo; è venuto con Puma, ma solo interfaccia tcp6 vincolato, non tcp:

[email protected]:~$ netstat -nlpt 
Proto Recv-Q Send-Q Local Address   Foreign Address   State  PID/Program name 
tcp6  0  0 ::1:3000    :::*     LISTEN  27116/ruby2.1 

Qualsiasi indizio perché? Ho cercato su google senza fortuna.

UPDATE:

Esecuzione puma -b tcp://0.0.0.0:3000 opere. Tuttavia, aggiungendo la direttiva si legano a config/puma.rb e funzionante rails s non si:

bind 'tcp://0.0.0.0:3000' 

i fili/lavoratori direttive nel mio file di configurazione stanno lavorando, però, quindi so il file di configurazione è sempre caricato e Usato. (Anche aggiunto un'affermazione di puts per essere sicuro.)

Il file di configurazione viene persino prelevato se eseguo appena puma, il binding all'interfaccia corretta. Potrei dover ricorrere a puma anziché a rails s, anche se è fastidioso e deve essere aggiunto ai miei documenti degli sviluppatori.

UPDATE2:

mi sbagliavo. L'esecuzione di rails s non preleva automaticamente config/puma.rb. Ancora indagando ...

+0

Questo non è più un problema per me perché ho deciso di usare 'puma' per eseguire l'app rails invece di' rails s', il che rende tutto funzionante, anche se continuo a pensare che questo problema dovrebbe essere risolto. Il motivo per cui devo passare a 'puma' è che il file di configurazione viene prelevato: http://stackoverflow.com/questions/25225444/how-to-run-rails-puma-server-with-config-file-using -rails-s-puma – odigity

+0

Un'altra soluzione, se si utilizza questo dietro un proxy inverso Apache/nginx è solo per utilizzare l'indirizzo IPv6. – luismreis

risposta

0

rotaie di scorrimento come:

rails s -b 0.0.0.0 

funziona per me. Il problema è che "localhost" (l'indirizzo di bind predefinito) si lega su IPv4 e IPv6 e la v6 viene scelta se entrambe sono disponibili. 0.0.0.0 forzare l'uso di un indirizzo IPv4 (funziona anche con 127.0.0.1).

+0

Per me, anche dopo aver eseguito questo comando, rails ascolta su tcp: //0.0.0.0: 3000 –