続・ruby-1.8.6-p110 で bridgesupport の生成に失敗する(解決編)
ruby-1.8.6-p110 で bridgesupport の生成に失敗するの続き。どうにか解決できたっぽいので、[rubycocoa-devel:1222]として投げた。
原因は Ruby の REXML ライブラリの変更によるもの。Ruby 1.8.6 の p40 で lib/rexml にわりと変更がはいって、それに追従できていない。
- [ruby-dev:32040]
- REXML::Element#add_attribute の値が文字列じゃないといけない。元々 API の仕様はそうなんだけど、これまでなんとなくうまく変換されていた。現在は、true/false/数値 がアウト。
- REXML::DocType の DTD ファイルの場所が normalize されるようになった。そのため、今までダブルクオートでくくって渡していたものがエスケープされてアウト。
これらを解決するよう修正を入れて、ローカルで検証。以下の方法で生成した bridgesupport がすべて一致すること(diff -urw)を確認した。
- ruby-1.8.6p36(Leopard組み込み), RubyCocoa r2102, BridgeSupport r15
- ruby-1.8.6p111(REXML修正済み), RubyCocoa r2102, BridgeSupport r15(修正済み)
- ruby-1.8.6p36(Leopard組み込み), RubyCocoa r2102, BridgeSupport r15(修正済み)
なかなか Leopard でのプログラミングお楽しみ会は遠いねえ。