keita と申します。
CVS版の 1.3.0(2003-05-28)で multipart/form-data を扱っていて気付いたのですが、
コードに 1.7 feature が使われているので ruby-1.6.8 でエラーが出ます。
この関して 1.6 で動作するようにパッチを作成してみました
(このメールの最下部に貼り付けています)。
なお、このパッチでは FormData クラスに to_s を追加しています。
これは FormData#[] :
def [](*key)
begin
@header[key[0].downcase].join(", ")
rescue
super
end
end
を呼んだ時に、例えば key = [0, 1] などの時に、0.downcase となって NameError が
起こるのですが、1.6 では NameError は ScriptError のサブクラスのためにエラーを
補足できません。このため rescue NameError を指定して動作確認をしたのですが、
この時もなぜかうまくいかなかったので、いっそのこと String へ変換した方が
扱い易いと思って to_s を再定義してみました。
この辺は安易な妥協ですので、いい感じに修正して取り込んで下さると嬉しいです。
diff -ur webrick.orig/lib/webrick/httputils.rb webrick/lib/webrick/httputils.rb
--- webrick.orig/lib/webrick/httputils.rb Tue Jun 3 17:54:17 2003
+++ webrick/lib/webrick/httputils.rb Wed Jun 4 22:36:26 2003
@@ -146,7 +146,7 @@
if args.empty?
@raw_header = []
@header = nil
- super
+ super("")
else
@raw_header = EmptyRawHeader
@header = EmptyHeader
@@ -211,6 +211,10 @@
end
alias :to_ary :list
+
+ def to_s
+ String.new(self)
+ end
end
def parse_query(str)