rurema / doctree

Repository of Japanese Ruby reference manual
https://docs.ruby-lang.org/ja/
244 stars 315 forks source link

WEBrick::HTTPResponse#to_s #2020

Open thekuwayama opened 5 years ago

thekuwayama commented 5 years ago

関連 https://github.com/ruby/webrick/pull/22

今後 WEBrick::HTTPResponse#to_s インスタンスメソッドは削除されるそうです。 新しくリリースされる webrick については、ドキュメントの更新が必要そうです。

https://docs.ruby-lang.org/ja/latest/method/WEBrick=3a=3aHTTPResponse/i/to_s.html

thekuwayama commented 4 years ago

バージョン 1.4.2 では、残念ながら WEBrick::HTTPResponse#to_s は壊れていて NoMethodError 例外が発生してしまいます。

webrick-1.4.2 ```bash $ irb irb(main):001:0> gem 'webrick', '1.4.2' => true irb(main):002:0> require 'webrick' => true irb(main):003:0> res = WEBrick::HTTPResponse.new(HTTPVersion: '1.1') => #"1.1"}, @buffer_size=nil, @logger=nil, @header={}, @status=200, @reason_phrase=nil, @http_version=#, @body="", @keep_alive=true, @cookies=[], @request_method=nil, @request_uri=nil, @request_http_version=#, @chunked=fals e, @filename=nil, @sent_size=0> irb(main):004:0> res.body = 'hoge' => "hoge" irb(main):005:0> res.to_s Traceback (most recent call last): 7: from /Users/thekuwayama/.rbenv/versions/2.6.3/bin/irb:23:in `
' 6: from /Users/thekuwayama/.rbenv/versions/2.6.3/bin/irb:23:in `load' 5: from /Users/thekuwayama/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `' 4: from (irb):5 3: from /Users/thekuwayama/.rbenv/versions/2.6.3/lib/ruby/2.6.0/webrick/httpresponse.rb:323:in `to_s' 2: from /Users/thekuwayama/.rbenv/versions/2.6.3/lib/ruby/2.6.0/webrick/httpresponse.rb:208:in `send_response' 1: from /Users/thekuwayama/.rbenv/versions/2.6.3/lib/ruby/2.6.0/webrick/httpresponse.rb:217:in `rescue in send_response' NoMethodError (undefined method `error' for nil:NilClass) ```

ruby のバージョンごとの default gem の webrick のバージョンと、WEBrick::HTTPResponse#to_s の挙動の相互関係は以下の通りです。

ruby version default webrick version WEBrick::HTTPResponse#to_s
2.4.x 1.3.1 => "HTTP/1.1 200 OK \r\nServer: \r\nDate: Fri, 27 Dec 2019 10:00:00 GMT\r\nContent-Length: 4\r\nConnection: Keep-Alive\r\n\r\nhoge"
2.5.x 1.4.2 # raise NoMethodError
2.6.x 1.4.2 # raise NoMethodError
2.7.0 1.6.0 => "#<WEBrick::HTTPResponse:0x00007fbfc5b90438>"