to_a
どうも、1.9ではto_aがStringやSymbolから使えなくなるようだ。OptionParserの666行目の*での展開が失敗するようになっている。make install-docでriのドキュメントの生成に失敗してしまう。とりあえずこんなかんじの完全無保証quick hackで凌ぐ。
Index: lib/optparse.rb =================================================================== RCS file: /src/ruby/lib/optparse.rb,v retrieving revision 1.73 diff -U2 -r1.73 optparse.rb --- lib/optparse.rb 9 Oct 2006 14:41:24 -0000 1.73 +++ lib/optparse.rb 26 Nov 2006 16:38:51 -0000 @@ -664,7 +664,17 @@ # def match(key) +=begin return key, *fetch(key) { raise AmbiguousArgument, catch(:ambiguous) {return complete(key)} } +=end + ret = fetch(key) { + raise AmbiguousArgument, catch(:ambiguous) {return complete(key)} + } + if ret.is_a? Array + return key, *ret + else + return key, ret + end end end
誰か偉い人がちゃんとそのうち直してくれるだろう。とりあえずみたいriのドキュメントがなんだったか忘れた。
追記:どう考えてもこのpatchはいけてない。complete()が配列返すべきなんだろうか。わかりません。*が使いづらい感じがするなぁ。
追記2: どうも*をはずすだけでいい気がしてきた。completeうまくいけば1個しか返らないし。しかし、自分では思いもよらないような書き方がいっぱいあって、勉強になる。
追記3: いやちがうかも。なんかいっぱい返すときがありそうだ。もっとちゃんと調べなきゃいかん。