すがブロ

sugamasaoのhatenablogだよ

MacOSX での Rails 2.2 環境を構築して MySQL のドライバでハマる

またお前か!

こないだは Windows 環境でハマったりしたのだけど、今度は Mac でハマりました。
基本的な手順はここ(Windows に Ruby on Rails 2.2 + MySQL 5.x 環境を構築する手順とハマり所 - @sugamasao.blog.title # => ”コードで世界を変えたい”)と同じですが、MySQL のドライバをインストールする部分だけ、以下のようにする必要がある(はず)。

mysql ドライバのインストール

普通に gem install mysql ではコンパイルが通らないので、 mysql-config のパスを通してあげる。

sudo gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

その後、 rake db:create すると、こんなエラーになる。

sugamasao% rake db:create
(in /private/tmp/test/sample3)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib
  Referenced from: /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle
  Reason: image not found - /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9/mysql.bundle

(See full trace by running task with --trace)

よくわからんが、/usr/local/mysql/lib 配下にはちゃんとライブラリがあるのだけど、参照しているのが /usr/local/mysql/lib/mysql 配下なので、ちゃんと読めていないようだ。
下記のサイトを参考にして、シンボリックリンクを張ってごまかす事にする*1

cd /usr/local/mysql/lib
sudo mkdir ./mysql
cd ./mysql
sudo ln -s /usr/local/mysql/lib/* . 

これでうまく行くはず

ここまででうまくできると思うのだけど、おれ自身は試行錯誤していて、以下のような処理を行っている。
もし上記だけでうまく行かなければ、下記も試してみてください。

cd /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7
sudo ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config
sudo make
sudo make install

参考サイト:Rails 2.2.2でMySQL使うにはドライバを更新しないといけないみたいですよ・・ - 適当探訪

*1:なんかもっとまともなやり方がありそうな気もするけど・・・