Index: [Article Count Order] [Thread]

Date: Thu, 5 Jun 2003 00:13:37 +0900
From: 山口慶太 <keita@kyomu.info>
Subject: [webrickja:81] patch of cvs-2003-05-28 for ruby 1.6.8
To: webrickja@notwork.org
Message-Id: <20030605001337.7b0add5c.keita@kyomu.info>
X-Mail-Count: 00081

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)