Finally took some time to move a small rails application from my old Macbook Pro to my Macbook Pro running Snow Leopard and MAMP. Setting up autotest which should have just been a few commands ended up being a battle getting the MySQL gem set up correctly.

Autotest setup

What should have been quick and simple…

sudo gem install ZenTest
gem install autotest-rails

Make a file named .autotest in the root directory of the application and add:

require "autotest/growl"

Ended up being…

1) Update the system first.:

sudo gem update --system

Error:

!!! The bundled mysql.rb driver has been removed from Rails 
2.2. Please install the mysql gem and try again: gem install 
mysql.

From this point the battle starts. I have recompiled the MySQL gem many times trying to get it working. Excerpts of a few errors:

Enclosing class/module 'mXML' for class XPointer not known
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out
 
Could not find main page README
Could not find main page README
Could not find main page README
Could not find main page README
ERROR:  Error installing rubynode:
ERROR: Failed to build gem native extension.
 
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
==================== ERROR =====================
Please set RUBY_SOURCE_DIR to the source path of ruby 1.8.7 (2008-08-11)!
================================================
uninitialized constant MysqlCompat::MysqlRes

The solution…

Finally got it working following the steps in this article. One gotcha of this article – since we are installing on a 64 bit operating system the last step needs to be installed with the -arch x86_64 flag, not -arch i386.

First download the MAMP source here, then:

unzip MAMP_1.7.2_src.zip
cd MAMP_1.7.2_src
tar -xzvf mysql-5.0.41.tar.gz
cd mysql-5.0.41 
./configure --with-unix-socket-path=/Applications/MAMP/tmp/mysql/mysql.sock --without-server --prefix=/Applications/MAMP/Library
make -j2
cp libmysql/.libs/*.dylib /Applications/MAMP/Library/lib/mysql 
mkdir /Applications/MAMP/Library/include
cp -R include /Applications/MAMP/Library/include/mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config