【问题标题】:Spork and Guard EADDRINUSESpork 和 Guard EADDRINUSE
【发布时间】:2012-12-24 12:56:35
【问题描述】:

我正在构建一个 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>'

通常当 spork 启动时,我会得到以下信息:

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

如何避免这个错误?

【问题讨论】:

    标签: ruby-on-rails-3 rspec-rails guard spork


    【解决方案1】:

    我来到这里遇到了和 OP 一样的问题。

    在进入“错误是错误”帖子的兔子洞并检查发生故障的代码行之后,我沮丧地重新启动。执行此操作后,我意识到端口上的锁定可能来自于我已退出上一个桌面会话这一事实,并且 Spork DRb 服务器在关闭时挂起 RubyMine,所以也许这就是端口打开的原因。

    果然,我现在可以启动 Spork 服务器了。

    我添加这个是为了让其他面临这个问题的人可以考虑它是否符合他们的情况。

    【讨论】:

      【解决方案2】:

      通过删除Guardfile 中的:foreman =&gt; true,我能够摆脱这个问题。现在我没有在我的测试中有意义地使用我的 .env 文件中的值,所以应该没问题,但我在 Github 上提交了一个问题。

      【讨论】:

        【解决方案3】:

        看起来这个错误是一个错误:https://github.com/rails/rails/pull/8812

        【讨论】:

          猜你喜欢
          • 2011-12-11
          • 1970-01-01
          • 2011-12-31
          • 1970-01-01
          • 2013-01-13
          • 1970-01-01
          • 1970-01-01
          • 2012-02-24
          • 1970-01-01
          相关资源
          最近更新 更多