From: goodies@... Date: 2015-03-10T04:08:44+00:00 Subject: [ruby-core:68476] [Ruby trunk - Bug #10956] [Open] Webrick cannot restart since Ruby 2.2.0 Issue #10956 has been reported by Shintaro Kojima. ---------------------------------------- Bug #10956: Webrick cannot restart since Ruby 2.2.0 https://bugs.ruby-lang.org/issues/10956 * Author: Shintaro Kojima * Status: Open * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-03-09 trunk 49906) [x86_64-darwin14] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Webrick keeps showing NoMethodError when WEBrick::HTTPServer#start is called after #stop. ```zsh webrick $ ruby -v ruby 2.3.0dev (2015-03-09 trunk 49906) [x86_64-darwin14] webrick $ ruby webrick.rb [2015-03-10 12:51:16] INFO WEBrick 1.3.1 [2015-03-10 12:51:16] INFO ruby 2.3.0 (2015-03-09) [x86_64-darwin14] [2015-03-10 12:51:16] INFO WEBrick::HTTPServer#start: pid=10889 port=4567 # started [2015-03-10 12:51:18] INFO going to shutdown ... [2015-03-10 12:51:18] INFO WEBrick::HTTPServer#start done. # stopped [2015-03-10 12:51:18] INFO WEBrick::HTTPServer#start: pid=10889 port=4567 [2015-03-10 12:51:18] ERROR NoMethodError: undefined method `[]' for nil:NilClass /Users/koji/.rbenv/versions/2.3.0-dev/lib/ruby/2.3.0/webrick/server.rb:174:in `block in start' [2015-03-10 12:51:18] ERROR NoMethodError: undefined method `[]' for nil:NilClass /Users/koji/.rbenv/versions/2.3.0-dev/lib/ruby/2.3.0/webrick/server.rb:174:in `block in start' [2015-03-10 12:51:18] ERROR NoMethodError: undefined method `[]' for nil:NilClass ``` Meanwhile, it can be restarted with Ruby 2.1.5. (until [this commit](http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48353&view=revision)) [Middleman](https://middlemanapp.com/) is affected for instance, resulting in its auto-reload feature crashing. Here is a simple code to reproduce: ```ruby require 'webrick' server = WEBrick::HTTPServer.new(BindAddress: '0.0.0.0', Port: 4567) Thread.start { server.start } sleep 1 until server.status == :Running puts "# started" server.stop sleep 1 until server.status == :Stop puts "# stopped" server.start ``` -- https://bugs.ruby-lang.org/