Saturday, February 19, 2011

MySQL, Ruby on Rails, and Mac OS X

A year ago, it was a bit of a pain to setup Ruby on Rails & MySQL on Windows Vista for the Foundations class at Carnegie Mellon. Download & install Ruby, download & install Rails, download & install MySQL, and spend some time finding a mysql.dll override to get it all to work.

A year later, with my first MacBook Pro that ships with Ruby and Rails 2, I thought setting up RoR dev environment would be just installing MySQL.

Ha! I was wrong...

Installing MySQL 5.5 64-bit was a no brainer.

gem update --system; no problems there.

gem install mysql; ooops... this is where it fell apart.

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

It resulted in something like the following:
Building native extensions.  This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

Some attempts later, I ended up with this:

uninitialized constant MysqlCompat::MysqlRes

Turns out rails & gem still don't work well with MySQL 5.5. (note: updating mysql2.bundle with the libmysqlclient library path might work...)

So time to uninstall MySQL 5.5. Hmm... how? Found this set of instructions.

  • Use mysqldump to backup your databases to text files!

  • Stop the database server

  • sudo rm /usr/local/mysql

  • sudo rm -rf /usr/local/mysql*

  • sudo rm -rf /Library/StartupItems/MySQLCOM

  • sudo rm -rf /Library/PreferencePanes/My*

  • edit /etc/hostconfig and remove the line MYSQLCOM=-YES-

  • rm -rf ~/Library/PreferencePanes/My*

  • sudo rm -rf /Library/Receipts/mysql*

  • sudo rm -rf /Library/Receipts/MySQL*

However, the MySQL 5.1 installer complained that a newer version of MySQL is already installed. One more piece of MySQL to clean up.

  • sudo rm -rf /var/db/receipts/com.mysql.*

That got MySQL 5.1 installed. MySQL gem installed and compiled (requires Xcode).

It worked! How about that?

Coming up next, Rails 3 on MySQL 5.5. Hopefully not another year later...

1 comment:

Michael Maitlen said...

I've also been through the pain of setting up MySQL on a Mac for developing RoR apps, twice...the last time I had the option I decided to simply use the default SQLite db for my latest Rails 3 app and because I'm using Heroku to host my app I'll have a PostgreSQL db during production. Not sure if your projects could benefit from simplifying this way, depends on your requirements...

BTW, thanks for your post on StackOverflow,, it helped me get past a problem I was having.