Mac OS X Snow Lopardでmysql2 gemをインストールする

Rails3(3.0.5)をいじっていたら、どうやらActiveRecordmysqlアダプターがmysql2というgemを使うように実装がかわったらしいので、mysql2 gemを試行錯誤してインストールした。(いちおう書いておくと試したOSXは10.6.7)

gemのインストール

MySQL/Rubyのときと同じオプションでOKっぽい。

$ sudo env ARCHFLAGS="-arch x86_64" gem install mysql2 -- --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib --with-mysql-include=/usr/local/mysql/include

※rvmを使ってる人はsudoいらないです

このままrake db:migrateとかすると以下のようになった。

$ rake db:migrate
(in /Users/tomotaka/code/bookmark)
rake aborted!
dlopen(/Users/tomotaka/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/tomotaka/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/tomotaka/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/Users/tomotaka/code/bookmark/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

ダイナミックライブラリのファイルを読み込めてないっぽい感じがする。


dylibのパス

こちらのページを参考に、DYLD_LIBRARY_PATH変数に/usr/local/mysql/libを加えてやればよくなった。LinuxならLD_LIBRARY_PATHだろうか。

$ export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

毎回手動でやるのはめんどくさいのでbashrcとかに書いておけばよさそうですね。~
ライブラリ側の問題っぽいし、そのうちなおる気もする。