2012-03-07 8 views
108

Aplikacja Rails 3.2.0, działająca dobrze na cienkim serwerze WWW, zarówno lokalnie, jak i na stosie cedru Heroku.Cienki serwer WWW: `start_tcp_server ': brak akceptora (RuntimeError) po przejściu do Git

Po:

$ git branch work 
$ git checkout work 
$ rails server 

uzyskać:

=> Booting Thin 
=> Rails 3.2.0 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
>> Thin web server (v1.3.1 codename Triple Espresso) 
>> Maximum connections set to 1024 
>> Listening on 0.0.0.0:3000, CTRL+C to stop 
Exiting 
/Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError) 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/tcp_server.rb:16:in `connect' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/base.rb:53:in `block in start' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/backends/base.rb:61:in `start' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/thin-1.3.1/lib/thin/server.rb:159:in `start' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/handler/thin.rb:13:in `run' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/rack-1.4.1/lib/rack/server.rb:265:in `start' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands/server.rb:70:in `start' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:55:in `block in <top (required)>' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:50:in `tap' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/gems/railties-3.2.0/lib/rails/commands.rb:50:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

Również, gdy robię:

sudo bundle exec rails server thin -p 3000 

uzyskać:

/Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError) 
from /Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec' 
from /Users/peter/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem' 
from /Users/peter/.rvm/gems/ruby-1.9.3-p125/bin/bundle:18:in `<main>' 

Mam zainstalowany program bundling 1.0.22. Zaktualizowany i zainstalowany. Nic nie działa. Jakieś pomysły?

+1

Czy masz już serwer działa w innym miejscu na komputerze? Może w Ogórku czy coś takiego? –

+1

Nie, nie mam. Właściwie ponowne uruchomienie komputera rozwiązało mój problem. Dziś to się powtórzyło. Wydaje się, że dzieje się, gdy przełączam się z jednej gałęzi git na drugą. – maeseele

+2

Dzięki! Mój komunikat o błędzie na MacOSX był "... eventmachine-1.0.0/lib/eventmachine.rb: 526: in \' start_tcp_server ": brak akceptora (port jest w użyciu lub wymaga uprawnień root) (RuntimeError)'. – JJD

Odpowiedz

8

rvmsudo szyn serera cienką -P 3000

Czy to dla mnie

+0

może bez rvm ... –

46

pgrep ruby zobaczyć co serwery działają, a następnie

kill -9 serverNumber 

;)

223

To działa dla mnie. Znajdź (? Zombie) serwer (może się zdarzyć, kiedy rzucić terminalu z uruchomionym serwerem):

$ ps ax | grep rails 

Jeśli zwróci coś takiego:

33467 s002 S+ 0:00.00 grep rails 
33240 s003 S+ 0:15.05 /Users/Arta/.rbenv/versions/1.9.2-p290/bin/ruby script/rails s -p 3000 

zabić go i uruchomić na nowo:

$ kill -9 33240 
$ rails s 
+0

perfect. powinno to być zaakceptowaną odpowiedzią. – nurinur

+16

Jeśli 'ps ax | grep rails' niczego nie podkręca, spróbuj 'ps ax | grep ruby'. – Kevin

+2

Zdecydowanie dzieje się na OSX, jeśli bezpośrednio wyjdziesz z okna terminala podczas pracy serwera szyny. +1 – notaceo

2

Wpadłem na podobny problem po powrocie do biura z wakacji. Uruchomiłem swój serwer w lokalnym IP jako:

rails s thin -b <my_ip> 

Problem polegał na tym, że mój adres IP się zmienił, po prostu musiałem użyć nowego.

6

Mam ten błąd, ponieważ był uruchomiony rails-dev-box z Rails wewnątrz niego.

Port 3000 in the host computer is forwarded to port 3000 in the virtual machine. 
Thus, applications running in the virtual machine can be accessed via 
localhost:3000 in the host computer. 

Więc jest wylogowany z Vagrant i shutted dół go:

[email protected]:/vagrant/rails$ exit 
$ vagrant halt 

To mi pomogło.

+0

Miałem ten sam problem. Miałem włóczęgę uciekającego z oddzielnego projektu. Prawdopodobnie nie pospolite, ale pomogło mi to. Dzięki! +1 – jake

43

Jeśli istnieje jakikolwiek inny proces blokowania portu, można dowiedzieć się, które PID ma tak:

$ lsof -i :3000 
COMMAND  PID USER FD TYPE    DEVICE SIZE/OFF NODE NAME 
Passenger 40466 josh 5u IPv4 0x7cae9332073ed4df  0t0 TCP *:hbci (LISTEN) 
Passenger 40467 josh 5u IPv4 0x7cae9332073ed4df  0t0 TCP *:hbci (LISTEN) 

Wtedy po prostu zabić go/je:

$ kill -9 40466 
$ kill -9 40467 
+0

'ntop' używał portu 3000 na moim komputerze. Odpowiedź jest na miejscu. – Tass

5

miałem ten błąd, ponieważ Już biegałem po szynach w innym terminalu. Zamknięcie mojego innego projektu naprawiło to.

+1

Jeśli chcesz uruchomić oba programy jednocześnie, możesz uruchomić drugi serwer na innym porcie. – Kevin

+0

@Kevin świetny punkt. Nie próbowałem tego zrobić, właśnie zapomniałem, że drugi projekt był uruchomiony. – DJTripleThreat

+0

@DJ Ma to sens. Pisałem swój komentarz dla przyszłych czytelników :) – Kevin

2

wykonać to w terminalu

sudo netstat -lpn |grep rails 

A potem

sudo kill <job id> 
+0

To był jedyny sposób, w jaki udało mi się znaleźć moje procesy, chociaż musiałem pobierać cienkie zamiast szyn. –

+0

Tak, działa w większości przypadków. Jeśli podoba Ci się głosowanie, proszę. –

+0

Tak, dziękuję. Już przejęte! –