Thin web server: `start_tcp_server': no acceptor (RuntimeError) after git branch checkout

A Rails 3.2.0 app, working fine with Thin web server, both locally and on Heroku cedar stack.

After:

  • Understanding Meld 3 way merge with Git
  • see diff of commit on submodule in gitlab
  • Jenkins: GitSCM finishes the clone in a detached head state, how can I make sure that the correct branch name is checked out?
  • Git CHMOD post-receive hook
  • Merge git repo into branch of another repo
  • Any VCS that implemented to see section's change history?
  • $ 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?

  • Use local Git repository with a master Subversion repository
  • How can I limit the log to all the descendants of a given commit?
  • git pull fails with “Untracked working tree file 'blah' would be overwritten by merge”, but tree is clean
  • Git pre-commit hook to find text in files
  • Git pull certain files only
  • Identifying a tag belongs to which branch in git
  • 9 Solutions collect form web for “Thin web server: `start_tcp_server': no acceptor (RuntimeError) after git branch checkout”

    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
    

    The port 3000 may already be in use. Look at http://mrjaba.posterous.com/starttcpserver-no-acceptor-runtimeerror

    pgrep ruby to see what servers are running and then

    kill -9 serverNumber
    

    😉

    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
    

    rvmsudo rails server thin -p 3000

    Does it for me

    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.

    I had this error because I was already running rails in another terminal. Closing my other project fixed this.

    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.

    Execute this in the terminal

    sudo netstat -lpn |grep rails
    

    And then

    sudo kill <job id>
    
    Git Baby is a git and github fan, let's start git clone.