0

Railsアプリを作成し、テストにSpork / Guard/Rspecを使用しています。

私はMac(10.6.8)を使用しています-使用しているgemは次のとおりです。

gem "rspec-rails", "~> 2.12.1"   
gem "guard-rspec", "~> 2.3.3"   
gem "guard-spork", "~> 1.4.1"   
gem "spork", "~> 0.9.2"   
gem 'rb-fsevent', '~> 0.9.1', :require => false   
gem "growl", "~> 1.0.3"  
gem 'capybara', '1.1.2'

ルートファイルを編集すると、sporkサーバーが再起動するはずです。Guardfileの行は次のとおりです。

guard 'spork', :rspec_env => { 'RAILS_ENV' => 'test' }, :foreman => true do
  watch('config/routes.rb')
end

しかし最近、新しいルートを追加すると、次のエラーが発生し始めました。

Loading Spork.prefork block...
Rack::File headers parameter replaces cache_control after Rack 1.5.
Address already in use - bind(2) (Errno::EADDRINUSE)
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:861:in `initialize'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:861:in `open'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:861:in `open_server'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:759:in `block in open_server'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:757:in `each'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:757:in `open_server'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:1342:in `initialize'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:1624:in `new'
/Users/cyrus/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/drb/drb.rb:1624:in `start_service'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/gems/spork-0.9.2/lib/spork/server.rb:29:in `listen'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/gems/spork-0.9.2/lib/spork/server.rb:20:in `run'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/gems/spork-0.9.2/lib/spork/runner.rb:75:in `run'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/gems/spork-0.9.2/lib/spork/runner.rb:10:in `run'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/gems/spork-0.9.2/bin/spork:10:in `<top (required)>'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/bin/spork:23:in `load'
/Users/cyrus/.rvm/gems/ruby-1.9.3-p125@h/bin/spork:23:in `<main>'

通常、スポークが起動すると、次のようになります。

Loading Spork.prefork block...
Rack::File headers parameter replaces cache_control after Rack 1.5.
Spork is ready and listening on 8989!

このエラーを回避するにはどうすればよいですか?

4

3 に答える 3

2

OPと同じ問題を抱えてここに来ました。

「エラーはバグです」という投稿のうさぎの穴をたどり、エラーが発生したコード行を調べた後、欲求不満から再起動しました。これを行った後、ポートのロックは、以前のデスクトップセッションからログアウトしたことが原因である可能性が高く、Spork DRb サーバーが RubyMine を閉じるときにハングアップしたため、ポートが開いたままになっている可能性があることに気付きました。

案の定、これで Spork サーバーを起動できました。

これを追加して、この問題に直面している他の人が自分の状況と一致するかどうかを検討できるようにします。

于 2013-03-08T22:53:30.350 に答える
0

このエラーはバグのようです: https://github.com/rails/rails/pull/8812

于 2013-01-14T17:04:52.970 に答える
0

を削除すること:foreman => trueGuardfile、この問題を取り除くことができました。現在、テストでファイルの値を有意義に使用していない.envので問題ないはずですが、Github に問題を提出しています。

于 2013-01-12T01:53:21.753 に答える