Project

General

Profile

Actions

Bug #10956

closed

Webrick cannot restart since Ruby 2.2.0

Added by codeout (Shintaro Kojima) about 9 years ago. Updated about 9 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-03-09 trunk 49906) [x86_64-darwin14]
[ruby-core:68476]

Description

Webrick keeps showing NoMethodError when WEBrick::HTTPServer#start is called after #stop.

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)
Middleman is affected for instance, resulting in its auto-reload feature crashing.

Here is a simple code to reproduce:

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
Actions #1

Updated by akr (Akira Tanaka) about 9 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r49917.


  • lib/webrick/server.rb: Invoke setup_shutdown_pipe in start method
    instead of listen method.
    [ruby-core:68476] [Bug #10956] Reported by Shintaro Kojima.
Actions

Also available in: Atom PDF

Like0
Like0