From: rubikitch@... Date: 2009-01-02T00:23:07+09:00 Subject: [ruby-list:45780] Re: Ruby 1.9.1-rc1[mswin32]でマルチバイトを含むソースが実行できない From: "Ayumu Aizawa" Subject: [ruby-list:45778] Re: Ruby 1.9.1-rc1[mswin32]でマルチバイトを含むソースが実行できない Date: Thu, 1 Jan 2009 22:36:17 +0900 >  マジックコメントが必須となると、いままでの資産をRuby1.9に対応させるために >  全てのスクリプトにマジックコメントを入れなければなりませんね。 magic commentを入れるだけならば、ちょっとしたスクリプトを書くだけで できるでしょう。Kconv.guessによる推測結果を使うと良いかと。 ただ、Ruby 1.9にはたくさんの非互換があるのでmagic commentを 入れただけで動くものはそんなに多くはないでしょうね。 エンコーディング関係は、同じエンコーディングを扱っている限り 多くのものがそのまま動くと思われます。KconvやNKFも使えます。 場合によっては明示的にエンコーディングを設定する必要も出てきます。 一番目立つのがString#eachが廃止されたことでしょう。 String#eachが廃止されたことで同時にEnumerableではなくなりました。 当然 文字列.map や 文字列.grep といったコードはエラーになります。 文字列.lines.map 等と書き換える必要があります。 Ruby 1.8.7でも対応しているので今のうちに対応しておくとよいでしょう。 文字リテラル(?a等)が整数ではなくて1文字の文字列を返すようになったのも 微妙に影響してきます。 $KCODEについても書き換える必要があります。 ただ、開発ツール(rcov、ruby-debug等)やライブラリのRuby 1.9対応が 進んでこないとまだ実用的とは言えないと思います。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/