Actions
Bug #10956
closedWebrick cannot restart since Ruby 2.2.0
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-03-09 trunk 49906) [x86_64-darwin14]
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
Updated by akr (Akira Tanaka) over 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
Like0
Like0