web-dev-qa-db-fra.com

Serveur Web léger: `start_tcp_server ': pas d'accepteur (RuntimeError) après l'extraction de la branche git

A Rails 3.2.0 app, fonctionne bien avec le serveur Web Thin, à la fois localement et sur une pile de cèdre Heroku.

Après:

$ git branch work
$ git checkout work
$ Rails server

Je reçois:

=> 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>'

Aussi, quand je fais:

Sudo bundle exec Rails server thin -p 3000

Je reçois:

/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>'

J'ai bundler 1.0.22 installé. Mis à jour et installé. Rien ne semble fonctionner. Des idées?

110
maeseele

Cela fonctionne pour moi. Rechercher un serveur (zombie?) (Peut se produire lorsque vous quittez le terminal lorsque le serveur est en cours d'exécution):

$ ps ax | grep Rails

Si cela retourne quelque chose comme:

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

tuez-le et courez à nouveau:

$ kill -9 33240
$ Rails s
226
Arta

Le port 3000 est peut-être déjà utilisé. Regardez http://mrjaba.posterous.com/starttcpserver-no-acceptor-runtimeerror

63
TuteC

Si un autre processus verrouille le port, vous pouvez savoir quel PID il a comme ceci:

$ 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)

Alors tuez-les simplement:

$ kill -9 40466
$ kill -9 40467
46
Joshua Muheim

pgrep Ruby pour voir quels serveurs fonctionnent, puis

kill -9 serverNumber

;)

46
Alborz

rvmsudo Rails server thin -p 3000

Le fait pour moi

8
wantrapreneur

J'ai cette erreur parce que je courais Rails-dev-box avec Rails à l'intérieur de celui-ci.

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.

Donc, est déconnecté de Vagrant et l'a fermé:

vagrant@Rails-dev-box:/vagrant/Rails$ exit
$ vagrant halt

Cela m'a aidé.

6
ExiRe

J'ai eu cette erreur parce que je courais déjà Rails dans un autre terminal. La fermeture de mon autre projet a corrigé ce problème.

5
aarona

Je suis tombé sur un problème similaire après être rentré au bureau après des vacances. J'exécute mon serveur sur l'IP local en tant que:

Rails s thin -b <my_ip>

Le problème était que mon IP avait changé, je devais juste utiliser le nouveau.

2
pepe

Exécuter ceci dans le terminal

Sudo netstat -lpn |grep Rails

Et alors

Sudo kill <job id>
2
Sam