WEBrick "Could not determine content-length of response body. Set content-length of the response..." even when content-length is set
Minimal demonstration code:
class BugDemonstrator < WEBrick::HTTPServlet::AbstractServlet
def do_GET(request, response)
response.body = ''
response.status = 204
response.content_length = 0
server = WEBrick::HTTPServer.new(:Port => 8080, :AccessLog => )
server.mount "/", BugDemonstrator
Output when run, connecting to localhost:8080 to issue an HTTP GET:
$ ruby webrickbug.rb
[2012-11-29 13:21:25] INFO WEBrick 1.3.1
[2012-11-29 13:21:25] INFO ruby 1.9.3 (2012-11-10) [x86_64-linux]
[2012-11-29 13:21:25] WARN TCPServer Error: Address already in use - bind(2)
[2012-11-29 13:21:25] INFO WEBrick::HTTPServer#start: pid=4941 port=8080
[2012-11-29 13:21:29] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true
C[2012-11-29 13:21:32] INFO going to shutdown ...
[2012-11-29 13:21:32] INFO WEBrick::HTTPServer#start done.
$ ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
I'm doing literally what the warning message says to do -- i.e. setting the content-length of the response -- but I'm still getting the warning.
#2 Updated by steveklabnik (Steve Klabnik) over 4 years ago
We were seeing this as well when using webrick with Rails. However, putting
gem 'webrick', '= 1.3.1'
in the Gemfile seemed to fix it, which is strange, since the standard library one is also v1.3.1. Is it possible that the gem is different than stdlib?