2015-01-04 5 views
7

Brandneues Rails 4.2.0 Projekt. Ran rails s, verhielten sich wie mit WEBrick erwartet:Warum bindet Puma nur an 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 

Added puma zu Gemfile, lief Bündel, dann rails s wieder; kam mit Puma, aber nur tcp6 Schnittstelle gebunden, nicht 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 

Irgendwelche Ahnung warum? Ich habe ohne Glück gegoogelt.

UPDATE:

Lauf puma -b tcp://0.0.0.0:3000 funktioniert. Allerdings Hinzufügen der bind Richtlinie config/puma.rb und rails s läuft nicht:

bind 'tcp://0.0.0.0:3000' 

Die Fäden/Arbeiter-Richtlinien in meiner Config-Datei arbeiten, jedoch, so dass ich weiß, dass die Konfigurationsdatei wird immer geladen und benutzt. (Hinzugefügt Auch eine puts Aussage sicher sein.)

Die Konfigurationsdatei wird auch aufgenommen, wenn ich nur puma laufen, auf die richtige Schnittstelle zu binden. Ich kann nur zu laufen puma statt rails s zurückgreifen muß, auch wenn es ärgerlich ist und hat meinen Entwickler docs hinzugefügt werden.

UPDATE2:

ich mich geirrt. Wenn Sie rails s ausführen, wird config/puma.rb nicht automatisch übernommen. Noch zu untersuchen ...

+0

Das ist für mich kein Problem mehr, weil ich beschlossen habe, 'puma' zu verwenden, um die Rails-App anstelle von' rails s' auszuführen, was alles funktioniert - obwohl ich denke, dass dieses Problem behoben werden sollte. Der Grund, warum ich zu 'puma' wechseln muss, ist, dass die Konfigurationsdatei abgerufen wird: http://StackOverflow.com/questions/25225444/how-to-run-rails-puma-server-with-config-file-using -rails-s-puma – odigity

+0

Eine andere Lösung, wenn Sie dies hinter einem Apache/Nginx Reverse Proxy verwenden, ist nur die IPv6-Adresse zu verwenden. – luismreis

Antwort

0

Schienen wie Laufen für mich

rails s -b 0.0.0.0 

funktioniert. Das Problem ist, dass "localhost" (die Standard-Bindungsadresse) an IPv4 und IPv6 bindet und v6 ausgewählt wird, wenn beide verfügbar sind. 0.0.0.0 Kraft, die die Verwendung einer IPv4-Adresse (auch mit 127.0.0.1 arbeiten).

+0

Für mich, auch nach dem Ausführen dieser Befehlszeilen hört auf tcp:/0.0.0.0: 3000 –