From: nobu.nakada@... Date: 2004-07-16T12:49:07+09:00 Subject: [ruby-dev:23916] Re: Ruby 1.8.2 preview1にむけて なかだです。 At Tue, 13 Jul 2004 21:47:19 +0900, Yukihiro Matsumoto wrote in [ruby-dev:23884]: > そろそろ1.8.2のpreview1を出そうと思ってるのですが、やり残し > たことがある人は宣言してください。 [ruby-dev:23888]でも触れましたが、base64でトップレベルに定義さ れるメソッドが動きません。 $ ruby1.8.2 -v -rbase64 -e 'encode64("")' ruby 1.8.2 (2004-07-01) [i686-linux] -e:1:in `encode64': _deprecated_base64 is deprecated; use Base64._deprecated_base64 instead /usr/local/lib/ruby/1.8/base64.rb:126:in `_deprecated_base64': super: no superclass method `_deprecated_base64' (NoMethodError) from -e:1:in `encode64' from -e:1 1.9の動作は置いておくとして、とりあえずこんなところではないかと。 Index: lib/base64.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/base64.rb,v retrieving revision 1.1.1.2.10.2 diff -U2 -p -d -r1.1.1.2.10.2 base64.rb --- lib/base64.rb 12 Feb 2004 12:26:44 -0000 1.1.1.2.10.2 +++ lib/base64.rb 12 Jul 2004 01:02:56 -0000 @@ -120,14 +120,11 @@ module Base64 include Base64 - def _deprecated_base64(*args) - m0, m1 = caller(0) - m = m0[/\`(.*?)\'\z/, 1] - warn("#{m1}: #{m} is deprecated; use Base64.#{m} instead") - super - end - dep = instance_method(:_deprecated_base64) - remove_method(:_deprecated_base64) for m in Base64.private_instance_methods(false) - define_method(m, dep) + module_eval %{ + def #{m}(*args) + warn("\#{caller(1)[0]}: #{m} is deprecated; use Base64.#{m} instead") + super + end + } end end -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦