2015-01-04 10 views
7

Zupełnie nowy wygenerowany projekt Rails 4.2.0. Ran rails s, zachowywał się zgodnie z oczekiwaniami przy użyciu serwer WEBrick:Dlaczego Puma wiąże tylko tcp6? (przez `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 

Dodane puma do Gemfile, prowadził pakiet, a następnie rails s ponownie; wpadł Puma, ale tylko związany interfejs tcp6, a nie 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 

Wszelkie pojęcia, dlaczego? Szukałem bez powodzenia.

UPDATE:

Running puma -b tcp://0.0.0.0:3000 prace. Jednak dodanie dyrektywy powiązania do config/puma.rb i działa rails s nie:

bind 'tcp://0.0.0.0:3000' 

nitek/pracowników dyrektyw w moim pliku config pracują jednak, więc wiem, że plik konfiguracyjny jest załadowany i uzyskiwanie używany. (Nawet dodano instrukcję put, aby się upewnić.)

Plik konfiguracyjny zostanie nawet pobrany, jeśli po prostu uruchomię puma, wiążąc się z właściwym interfejsem. Być może muszę użyć kodu puma zamiast rails s, mimo że jest to denerwujące i musi zostać dodane do moich dokumentów dla programistów.

Update2:

myliłem. Uruchomienie rails s nie powoduje automatycznego pobrania pliku config/puma.rb. Nadal bada ...

+0

To już nie jest problem dla mnie, ponieważ zdecydowałem się użyć 'puma' do uruchomienia aplikacji rails zamiast' rails s', co sprawia, że ​​wszystko działa - chociaż nadal uważam, że problem ten powinien zostać naprawiony. Powodem, dla którego muszę przełączyć się na 'puma', więc plik konfiguracyjny zostanie pobrany: http://stackoverflow.com/questions/25225444/how-to-run-rails-puma-server-z-config-file-using -rails-s-puma – odigity

+0

Innym rozwiązaniem, jeśli używasz tego za odwrotnym proxy Apache/nginx, jest użycie adresu IPv6. – luismreis

Odpowiedz

0

szyny jezdne jak:

rails s -b 0.0.0.0 

pracuje dla mnie. Problem polega na tym, że "localhost" (domyślny adres wiązania) wiąże się z IPv4 i IPv6, a v6 jest wybierany, jeśli oba są dostępne. 0.0.0.0 Wymuś użycie adresu IPv4 (działa również z 127.0.0.1).

+0

Dla mnie, nawet po uruchomieniu tego polecenia szyny nasłuchują na tcp: //0.0.0.0: 3000 –

Powiązane problemy