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?
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
Le port 3000 est peut-être déjà utilisé. Regardez http://mrjaba.posterous.com/starttcpserver-no-acceptor-runtimeerror
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
pgrep Ruby
pour voir quels serveurs fonctionnent, puis
kill -9 serverNumber
;)
rvmsudo Rails server thin -p 3000
Le fait pour moi
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é.
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.
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.
Exécuter ceci dans le terminal
Sudo netstat -lpn |grep Rails
Et alors
Sudo kill <job id>