ruby 1.8.6のREXMLのバグを回避するコード
http://d.hatena.ne.jp/koseki2/20070516/rexmlbug
などでも触れられてるけど、けっこう困ったので回避する動的パッチを作った。
下のコードを、require 'rexml/document'
の後に挿入すれば、修正できる。
tracにあげられているバグレポートに付属されていたパッチを丸写ししただけ。
作業時間5分。ビバ動的言語。書いててよかったユニットテスト。
# 1.8.6のREXMLには名前空間と属性に関するバグがあるので、これを修正する # http://www.germane-software.com/projects/rexml/ticket/102 if RUBY_VERSION == '1.8.6' module REXML # reopen class Element def attribute( name, namespace=nil ) prefix = nil prefix = namespaces.index(namespace) if namespace prefix = nil if prefix == 'xmlns' # <-- ここが修正点 attributes.get_attribute( "#{prefix ? prefix + ':' : ''}#{name}" ) end end end end