From: Nobuyoshi Nakada Date: 2007-02-06T09:32:11+09:00 Subject: [ruby-dev:30277] Re: Object#*methods なかだです。 At Tue, 6 Feb 2007 03:46:24 +0900, U.Nakamura wrote in [ruby-dev:30274]: > Object#*methodsがSymbol配列を返すようになったのと、SymbolがString > のサブクラスじゃなくなったのとで、動かなくなったコードがある > ようです。 > 影響範囲が調べきれないのですが、とりあえず気付いたところだけ > パッチです。 methods.include? という書き方自体が元々あまりよくないのだと思い ますが、 > -unless Kernel.methods.include?("URI") > +unless Kernel.methods.include?(:URI) unless Kernel.respond_to?(:URI) > - unless instance_methods.include?("w3cdtf") > + unless instance_methods.include?(:w3cdtf) unless method_defined?(:w3cdtf) はいいとして > - unless private_instance_methods(false).include?("start_#{name}") > + unless private_instance_methods(false).include?("start_#{name}".to_sym) private_method_defined? にはオプショナルな引数がありませんね。 以下の三つはそもそも不要です。 > module Enumerable > - unless instance_methods.include?("sort_by") > + unless instance_methods.include?(:sort_by) > class Hash > - unless instance_methods.include?("merge") > + unless instance_methods.include?(:merge) > module Kernel > - unless methods.include?("funcall") > + unless methods.include?(:funcall) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦