シンWebサーバー: `start_tcp_server ':gitブランチのチェックアウト後にアクセプターなし(RuntimeError)


110

Rails 3.2.0アプリ。ローカルとHeroku杉のスタックの両方でThin Webサーバーで正常に動作します。

後:

$ git branch work
$ git checkout work
$ rails server

私は得ます:

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

また、私がするとき:

sudo bundle exec rails server thin -p 3000

私は得ます:

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

バンドル1.0.22がインストールされています。更新してインストールしました。何も動作しないようです。何か案は?


1
マシンの他の場所でサーバーがすでに実行されていますか?キュウリか何かで?
Josh Leitzel、2012年

1
いいえ、していません。実際、コンピューターを再起動することで問題は解決しました。今日それは再び起こりました。あるgitブランチから別のgitブランチに切り替えると発生するようです。
maeseele 2012

2
ありがとう!MacOSXでのエラーメッセージはでした... eventmachine-1.0.0/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
JJD 2013

同じポートを使用して2つの異なるアプリケーションを実行しようとしたときも同じです。このトピックでは、実行中の他のアプリケーションについて考えさせられました。
Vadorequest 2014

回答:


226

これは私にとってはうまくいきます。(ゾンビ?)サーバーを見つけます(サーバーを実行したまま端末を終了すると発生する可能性があります):

$ ps ax | grep rails

それが次のようなものを返す場合:

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 -9 33240
$ rails s

17
ps ax | grep rails何も表示されない場合は、を試してくださいps ax | grep ruby
ケビン

3
Railsサーバーの実行中にターミナルウィンドウをそのまま終了すると、OSXで必ず発生します。+1
notaceo 2014年


48

ポートをロックしている他のプロセスがある場合は、次のようにして、どのPIDがあるかを確認できます。

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

次に、単にそれを殺します:

$ kill -9 40466
$ kill -9 40467

ntop私のマシンではポート3000を使用していました。正解です。
Tass



6

Rails -dev-boxを内部でRailsで実行していたため、このエラーが発生しました。

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.

したがって、Vagrantからログアウトしてシャットダウンしました。

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

それは私を助けました。


私も同じ問題を抱えていました。別のプロジェクトから浮浪者を走らせていました。おそらく一般的ではありませんが、それは私を助けました。ありがとう!+1
jake 14

5

別のターミナルですでにレールを実行していたため、このエラーが発生しました。私の他のプロジェクトを閉じるとこれが修正されました。


1
両方のプログラムを同時に実行したい場合は、別のポートで2番目のサーバーを起動できます。
ケビン

@ケビン素晴らしいポイント。それは私がやろうとしたことではなく、他のプロジェクトが実行されていることを忘れてしまいました。
aarona 2014年

@DJそれは理にかなっています。私は将来の読者のために私のコメントを投稿していました:)
Kevin

2

私は休暇からオフィスに戻った後、同様の問題に遭遇しました。サーバーをローカルIPで実行します。

rails s thin -b <my_ip>

問題は、私のIPが変更されたことです。新しいIPを使用する必要がありました。


2

ターミナルでこれを実行します

sudo netstat -lpn |grep rails

その後

sudo kill <job id>

プロセスを見つけることができたのはこれが唯一の方法でしたが、レールの代わりにシンを探す必要がありました。
スキレットシーフ

はい、それはほとんどのケースで動作します。投票が好きならどうぞ。
Sam

プロセスIDを見つけて強制終了することがトリックでした。最初のコマンドは私にはうまくいきませんでしたがps aux | grep rails
フランシスコキンテロ2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.