Ruby 1.9.1 がリリースされました。が、MySQL/Ruby は 1.9 に対応してませんでした。気づいてませんでした… orz。
とりあえず、Ruby 1.9.1 でもコンパイルと簡単なテストを通るようにしてみたものを、MySQL/Ruby 2.8.1 としてリリースしました。
ダウンロードはこの辺から。
http://rubyforge.org/frs/?group_id=4550
Ruby 1.9 の大きな特徴である M17N についてはまったく対応してません。なので、データベースから取り出した文字列は、全部 ASCII-8BIT になります…と思います…たぶん…。
Ruby 1.9.1 と MySQL 5.1 のリリースに合わせて、Ruby/MySQL 3.0 をリリースしようとこっそりたくらんでいたのですが、全然間に合ってません… (--;
予定しているのは MySQL/Ruby ではなく Ruby/MySQL です。ややこしいのですが (^^; MySQL/Ruby は MySQL 付属の libmysqlclient を使用した C 言語で書かれている Ruby の拡張ライブラリですが、Ruby/MySQL はすべて Ruby で記述されたライブラリです。つまりコンパイル不要です。
C ではなく Ruby で書いてあると速度が心配なのですが、Ruby 1.9 なのでなんとかなるんじゃないかと楽観してます。うまくいったら C版の MySQL/Ruby は 2.8.x で終了です。
今のところ次のような感じになる予定です。
- Mysql.new の引数に URI 形式 "mysql://user:pass@hostname:port/db" を受け付ける。
- Mysql.new にブロックを渡したら、ブロックから抜ける時に Mysql#close する。
- mysqld の charset と ruby の encoding との間で文字列を自動変換する。
- クエリは基本的にプリペアドステートメント。Mysql#query("select ?,?,?", 1, 2, 3) のような感じで記述できる。
- 結果セットは Enumeratable
- サーバエラーは、エラーの種類毎に独立したクラス(今はすべて Mysql::Error)。
- libmysqlclient を使用しないので、GPL 汚染を気にしなくてよい(たぶん現状でも問題ないはずだけど…)。
- たぶん、たくさんの非互換 (^^;
Ruby から MySQL を使っている人でも、直接 Mysql クラスを使っている人は少ないと思うので、どう変わろうと興味がない人ばかりかもしれませんけど。