[ruby-list:45780] Re: Ruby 1.9.1-rc1[mswin32]でマルチバイトを含むソースが実行できない

From: rubikitch@...
Date: 2009-01-01 15:23:07 UTC
List: ruby-list #45780
From: "Ayumu Aizawa" <ayumu.aizawa@gmail.com>
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/

In This Thread

Prev Next