Thin web server: `start_tcp_server': no acceptor (RuntimeError) after git branch checkout
Ruby on-Rails-3GitThinRuby on-Rails-3 Problem Overview
A Rails 3.2.0 app, working fine with Thin web server, both locally and on Heroku cedar stack.
After:
$ git branch work
$ git checkout work
$ rails server
I get:
=> 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>'
Also, when I do:
sudo bundle exec rails server thin -p 3000
I get:
/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>'
I have bundler 1.0.22 installed. Updated and installed it. Nothing seems to work. Any ideas?
Ruby on-Rails-3 Solutions
Solution 1 - Ruby on-Rails-3
This works for me. Find (zombie?) server (can happen when quitting terminal with server running):
$ ps ax | grep rails
If it returns something like:
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
kill it, and run anew:
$ kill -9 33240
$ rails s
Solution 2 - Ruby on-Rails-3
The port 3000 may already be in use. Look at http://mrjaba.posterous.com/starttcpserver-no-acceptor-runtimeerror
Solution 3 - Ruby on-Rails-3
If there's any other process locking the port, you can find out which PID it has like this:
$ 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)
Then simply kill it/them:
$ kill -9 40466
$ kill -9 40467
Solution 4 - Ruby on-Rails-3
pgrep ruby
to see what servers are running and then
kill -9 serverNumber
;)
Solution 5 - Ruby on-Rails-3
> rvmsudo rails server thin -p 3000
Does it for me
Solution 6 - Ruby on-Rails-3
I has this error because i was running rails-dev-box with Rails inside of it.
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.
So is logged out from Vagrant and shutted down it:
vagrant@rails-dev-box:/vagrant/rails$ exit
$ vagrant halt
That helped me.
Solution 7 - Ruby on-Rails-3
I had this error because I was already running rails in another terminal. Closing my other project fixed this.
Solution 8 - Ruby on-Rails-3
I ran into a similar issue after getting back to the office from vacation. I run my server on the local IP as:
rails s thin -b <my_ip>
The problem was that my IP had changed, I just needed to use the new one.
Solution 9 - Ruby on-Rails-3
Execute this in the terminal
sudo netstat -lpn |grep rails
And then
sudo kill <job id>