Also...just so know one thinks I don't know how to use Google...

I did find http://raa.ruby-lang.org/project/mysql-ruby-win/.  But it
didn't work for me using MySQL 4.0.20.

And I'm aware of the Pure Ruby implementation here
(http://raa.ruby-lang.org/project/ruby-mysql/).  It even comes with
Rails.  But it isn't as fast, but it is good to test with.

On Thu, 9 Sep 2004 12:55:15 -0700, Justin Rudd <justin.rudd / gmail.com> wrote:
> Is it just me, or is getting anything other than standard ruby a true
> ordeal on Windows?
> 
> Now I'm sure everyone is snickering right about now, that's OK.
> 
> Anyway, I'm trying to write a product using Ruby that will be
> downloaded and run locally.  I need to support different databases.
> MySQL has native Windows binaries.  Looking for Ruby bindings to MySQL
> led me to http://www.tmtm.org/en/mysql/ruby/.  So I download the
> archive, extract it, run ruby extconf.rb, and it stops there.
> 
> It can't find mysql_query in any of the library paths that it looks
> at.  So I look at the log file and see that it is basically generate
> mini-C programs and if they compile, the stuff is there.
> 
> On Windows, there is a mysqlclient.lib file that it is trying to link
> to.  Hm...why would it still show up unresolved?
> 
> Fast forward 3 hours of digging through mkmf to figure out how it is
> generating paths...  Screw this.  I'll just generate the C file myself
> and write my own project to generate the library.  That wasn't too
> hard.  Got the project going.  Got the shared library compiled.
> Hm...where do I put the file?  Ah...I put it in the i386-msvcrt
> directory in site_ruby.  Hm...everything in there is a .so file.
> OK...I'll rename mine to mysql.so (is this necessary?)
> 
> Now I'll go and do this -
> 
>     require 'mysql'
> 
> Run this through the interpreter...
> 
> Get this...
> 
> C:/shared/tools/sdks/ruby/lib/ruby/1.8/i386-mswin32/mysql.so: 127: The
> specified procedure could not be found.   - Init_mysql (LoadError)
> C:/shared/tools/sdks/ruby/lib/ruby/1.8/i386-mswin32/mysql.so    from
> connect.rb:1
> 
> Look at my C project, Init_mysql does exist.  But it isn't exported.
> In the Windows world, I have to export functions from DLLS.  So that
> things like GetProcAddress work.  So I start off by exporting the one
> method.
> 
> Rerun the interpreter, no errors.  WOOHOO!!!
> 
> So I extend the script to this...
> 
>    require 'mysql'
> 
>    c = Mysql.new('localhost', 'root', 'my_root_password')
> 
>    c.list_dbs.each { |db|
>       p db
>    }
> 
> I get a list of all Databases in MySQL instance.  Try some inserts,
> deletes, etc.  Everything seems to be working.
> 
> Now here are my problems -
> * This took 6 hours
> * extconf gave me no ideas that it required a C compiler
> * extconf gave me no ideas what was going wrong (I just got a no)
> 
> I'm a pretty decent Windows programmer (been doing it for 10+ years
> now).  And I think I've got to go through the whole process again to
> get Ruby DBI working and SQLLite/Ruby (which I probably won't use
> since it is GPL).  And PostgresQL.  But for someone starting out with
> Ruby on Windows, would they know they needed a C compiler?  Would they
> know they needed to add __declspec(dllexport) to that one function?
> 
> Now let's contrast this with Python.  I go to
> http://sourceforge.net/projects/mysql-python/ and they have an EXE I
> can download, run it, and I can connect to MySQL in under 5 minutes
> (after download).
> 
> I love Ruby.  And a lot of that love comes from Rails (which I've been
> using quite successfully).  But building an app is harder than it
> should be.
> 
> I'm going to document what I did and post it on my weblog along with
> the binary file that I generated.  Hopefully someone else out there
> can make use of it.
> 
> --
> Justin Rudd
> http://seagecko.org/thoughts/
> 



-- 
Justin Rudd
http://seagecko.org/thoughts/