2010-05-31
■[windows][ruby][mysql]Windows上でRubyからMySQL 5.1を使う
現在Windows上のRubyでMySQLを使う場合、安定性や速度の面で最適なバインディングはmysql-win 2.8.1だと思われますが、リリースのアナウンスにも書かれている通り、このgemが対応するMySQLのバージョンは5.0.83です。
しかし機能や安定性など、様々な理由でMySQL 5.1を使いたい場合もあるはずです。
そこで、mysql gemを最新のソースツリーからビルドすることでMySQL 5.1に対応する方法を説明します。
必要なもの
Ruby
Ruby Installer for Windowsから適当なものをダウンロードしてインストールしてください。私は諸事情からrubyinstaller-1.8.6-p383-rc1.exeを使いました。もちろんpikで好きなバージョンをインストールしても構いません(多分)。
Development Kit
ここで言うDevelopment Kitは、ネイティブモジュールを含むgemをWindows上でビルドするためのツールです。前述のRuby Installer for Windowsにあります。
7-Zipで展開したら、中にあるINSTALL.txtに従って以下の作業をします。
- binフォルダとdevkitフォルダをRubyのインストールフォルダへ移動
- devkit/msys/1.0.11/etc/fstabを修正
fstabは下のような内容になっているので、「C:/Ruby」の部分を実際のRubyのインストールパスに直してやります。
C:/Ruby/devkit/gcc/3.4.5 /mingw C:/Ruby/devkit/msys/1.0.11/usr/local /usr/local
msysgit
msysgitはWindows用のGitです(Gitは分散リポジトリ型のバージョン管理ツールです)。プロジェクトのホームページから最新版をダウンロード、インストールしてください。今ならGit-1.7.0.2-preview20100309.exeです。
mysql-gemのソース
今回元にするソースは、mysql-gemという名前でLuis Lavena氏が管理、開発しているバージョンです(mysql-win 2.8.1をリードしたのも同氏です)。
gitが使えるようになったらリポジトリから取り寄せましょう。
git clone http://github.com/luislavena/mysql-gem.git
gemを作る
mysql-gemは以下のgemに依存しているので、先にインストールします。
gem install hoe rake-compiler rubyforge
rubyforge gemはセットアップが必要なので、下のように実行してやります。
rubyforge setup
セットアップが終わると”~/.rubyforge/user-config.ymlを編集しろ”というようなメッセージが出ますが、mysql-gemをビルドするだけなら必要ありません。
準備ができたら、ソースのルートへ移動して、gemを作ります。
cd mysql-gem rake gem
pkg/mysql-2.8.2.gemができるはずです。
インストール
インストールのプロセスは、ネイティブモジュールをコンパイルしてMySQLのライブラリをリンクします。そのためにヘッダファイルとライブラリのパスを指定してやる必要があるのですが、空白を含んだパスを指定するとコンパイルは失敗します。もしMySQLをスペースを含んだパス(C:\Program Files\MySQL\MySQL Server 5.1など)にインストールしていたら、下のようにsubstコマンドを使って空白のないパスにマッピングしてやるとよいでしょう。
subst m: "C:\Program Files\MySQL\MySQL Server 5.1"
上の場合、ヘッダファイルはm:\include、ライブラリはm:\lib\optで参照できるようになります。
インストールのコマンドラインは次のようになります(includeとlib\optは適切なパスに置き換えてください)。
gem install pkg\mysql-2.8.2.gem -- --with-mysql-include=m:\include --with-mysql-lib=m:\lib\opt
動作確認
下のようなコマンドでconnectできることを確認しましょう(MySQLサーバのホスト名、ユーザ名、パスワードは適宜差し替えてください)。
ruby -rubygems -e "require 'mysql'; puts Mysql.connect('localhost', 'root', 'password').server_info"
- 206 http://www.oiax.jp/rails/zakkan/windows_rails_mysql_5_1.html
- 39 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=rails+mysql+5.1&aq=f&aqi=g-e4g6&aql=&oq=&gs_rfai=
- 27 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&q=ruby+mysql+windows&aq=f&aqi=g2&aql=&oq=&gs_rfai=
- 21 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4FRSJ_jaJP370JP370&q=ruby+windows
- 15 http://pipes.yahoo.com/pipes/pipe.info?_id=5c957097ed152660234169b605fb3fa7
- 12 http://www.google.co.jp/url?sa=t&rct=j&q=ruby mysql gem&source=web&cd=8&ved=0CFEQFjAH&url=http://d.hatena.ne.jp/irohiroki/20100531/windows_ruby_mysql5_1&ei=qxqoTp_iGa7MmAX-4OS1Dw&usg=AFQjCNFmpjEjfdESbahoDulcqxzQmZkSow
- 9 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=windows+rails+mysql+バージョン
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331085841412&ved=0CDYQFjAB&url=http://d.hatena.ne.jp/irohiroki/20100531/windows_ruby_mysql5_1&ei=rMFWT6_cO4zHmQWTvfzpCQ&usg=AFQjCNFmpjEjfdESbahoDulcqxzQmZkSow
- 7 http://www.google.co.jp/search?q=ruby+mysql+5.1&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=ruby on rails mysql windows&source=web&cd=2&ved=0CCoQFjAB&url=http://d.hatena.ne.jp/irohiroki/20100531/windows_ruby_mysql5_1&ei=WFe1TriPEonzmAX75LTgAw&usg=AFQjCNFmpjEjfdESbahoDulcqxzQmZkSow&sig2
