This post originated from an RSS feed registered with Ruby Buzz
by Joey Gibson.
Original Post: Ruby + MySQL + Windows = SUCCESS! (Finally)
Feed Title: Joey Gibson's Blog
Feed URL: http://www.jobkabob.com/index.html
Feed Description: Thoughts, musings, ramblings and rants on Java, Ruby, Python, obscure languages, politics and other exciting topics.
If you do a Google for "ruby mysql windows" you will find, among other
things, lots of people trying to use Ruby to access MySQL on a Windows system. I've been
trying for some time, and have finally gotten things going.
About a year ago I found this
article
in which he fought the same fight. He was able to get a working .so
file, using the .Net C++ compiler, and offered his binary, but that
won't work for everyone. Specifically, a file compiled with VC7 isn't
usable by VC6 (at least not that I could see).
Anyway, I followed his
advice to a point, and then started experimenting. I opened up
irb and started poking MKMF to see what I could
accomplish. What I finally ended up with is a hacked
extconf.rb that can be edited easily to get the library built
on your own system. It will work with both VC6 and VC7, by changing
one line in the file. Assuming that you have MySQL 4.1 installed in
the default location, and you are using VC6, and Ruby 1.8.2 is
installed in the default location, you should be able to do this
ruby extconf.rb
nmake
nmake install
and have everything compile and install. Notice that I said
should. You should still take a look at the file, near the top, to
see if the settings are appropriate for your system.
Once installed, you can use this module directly, or install DBI for that "standard"
interface. DBI will use the library you just built and installed, so
all you have to do is download the DBI module, then do this
There are only two lines you might need to change, and they are at the
top of the file with comments around them.
I have tested this slightly using the binary I built with VC6 and it
seems to work fine. I have not tested the VC7-compiled binary, because
I don't have a Ruby distro that was compiled with VC7. Let me know if
these directions don't work for you. Not that I can do anything about
it, but I could put a note here for others.
Also, notice that I used 8.3 pathnames, which is really ugly. I would
have been happy to use the pathnames with spaces, but VC6 doesn't like
spaces in pathnames. VC7 can grok them fine, but not 6. Both
understand the 8.3, so it was just easier to use that.
One more thing. I don't believe that installing Visual Studio.Net
installs the necessary header and library files for building non-.Net
binaries. IOW, you might not have windows.h which will cause
things not to work. If you download and install the Platform SDK, then
you'll be fine. My extconf.rb will add the default Platform SDK
directory to the necessary paths, so if you have that installed, and
try to do a VC7 build, you should be ok.