From: WATANABE Hirofumi Date: 2006-11-24T21:42:30+09:00 Subject: [ruby-dev:29946] Re: webrick and String#each わたなべです。 "NARUSE, Yui" writes: > 1.9 にて webrick に String#each 削除の影響がでています。 > > raw に Array が来てしまったり、io に String が来てしまうケースが > あること自体がそもそもの問題な気はしますけれど。 > > なお参考までに、Content-Disposition がある時に raw が Array になります。 > > Index: lib/webrick/httputils.rb > =================================================================== > RCS file: /src/ruby/lib/webrick/httputils.rb,v > retrieving revision 1.14 > diff -u -r1.14 httputils.rb > --- lib/webrick/httputils.rb 2 Nov 2006 00:21:27 -0000 1.14 > +++ lib/webrick/httputils.rb 23 Nov 2006 08:18:40 -0000 > @@ -127,7 +127,7 @@ > def parse_header(raw) > header = Hash.new([].freeze) > field = nil > - raw.lines.each{|line| > + (raw.class.method_defined?(:lines) ? raw.lines : raw).each{|line| > case line > when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om > field, value = $1, $2 > @@ -317,7 +317,7 @@ > form_data = Hash.new > return form_data unless io > data = nil > - io.each{|line| > + (io.class.method_defined?(:lines) ? io.lines : io).each{|line| > if boundary_regexp =~ line > if data > data.chop! IOやStringやStringIOにはそのためのeach_lineがあるので、 ここではそれを使ったほうがいいでしょう。 1.8でも1.9でも使えますし。 -- わたなべひろふみ