読者です 読者をやめる 読者になる 読者になる

OSX 10.7 Lion で Rails と MySQL

Ruby

MacBook Air買いました。そしてLionでRails開発環境を作成していきなりハマるw

rubyはrvmで1.8.7、railsは2.3.11、gemは1.3.5というちょっと古い環境。

まずMySQLデータベースサーバ。MySQLのサイトにおいてある10.6用64bit版のdmgが普通に使えるようだ。インストールしてMySQLを起動。

次に、MySQLドライバをgemでインストール

$ env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

マイグレーションすると…

$ rake db:migrate 
rake aborted!
uninitialized constant MysqlCompat::MysqlRes

失敗した失敗した失敗した失敗し(以下略

$ irb
>> require "mysql"
LoadError: no such file to load -- mysql
	from (irb):1:in `require'
	from (irb):1

mysqlのドライバが正しくインストールされてないようだ。"uninitialized constant MysqlCompat::MysqlRes" でググってみると、動的リンクされる mysqlclient ライブラリのパスが正しくないとか宇宙は膨張しているとかなんとか英語で書いてあるので、よくわからない。

とりあえずotoolコマンドで動的リンクしているライブラリを調べてみる。

$ otool -L /Users/nullpon/.rvm/gems/ruby-1.8.7-p352/gems/mysql-2.8.1/lib/mysql_api.bundle 
/Users/nullpon/.rvm/gems/ruby-1.8.7-p352/gems/mysql-2.8.1/lib/mysql_api.bundle:
	/Users/nullpon/.rvm/rubies/ruby-1.8.7-p352/lib/libruby.dylib (compatibility version 1.8.0, current version 1.8.7)
	libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.0.0)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)

ほむほむ、libmysqlclient.18.dylib だけ正しいパスになってない。これではリンクできなそうな気がするので直してみる。install_name_tool コマンドで変更できるらしい。

$ install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/nullpon/.rvm/gems/ruby-1.8.7-p352/gems/mysql-2.8.1/lib/mysql_api.bundle 

これで試してみる

$ rake db:migrate
rake aborted!
Access denied for user 'xxxxx'@'localhost' (using password: YES)

おうふ、DB作ってなかったけど、mysqlライブラリをロードして接続しにいってます。

とりあえず今日はここまで…続きは後で