Create  Edit  Diff  Liam  Index  Search  Changes  History  Source  RSS  wikifarm  Login

mysql-ruby

MySQL Ruby Module ver2.4.2-1 for windows binaries RAA:mysql-ruby-win

※ 自分への 1.8対応のプレッシャーということで

これは MySQL の Ruby API である MySQL の Windows環境でのバイナリです。 cygwin版と、mingw32版、mswin32版があります。 rubyのバージョンは、1.6.6です。 ruby test.rb のテストはすべて通ってます。 確認したサーバは、

 Linux    3.23.41
 WinNT4WS 3.23.38-nt(同じマシン)

です。

インストール

% ruby install.rb -n

で、インタプリタを自動認識して、インストール先が表示されます。(たぶん)

 ex.
   install
     mingw32/mysql.so => e:/usr/local/mingw/lib/ruby/site_ruby/1.6/i686-mingw32

Config::CONFIGを利用してますので、rbconfig.rbが正常にインストールされている必要があります。バイナリ配布なパッケージで確認したのは、うささんのMSWin32配布パッケージ http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ ruby-1.6.6-i586-mswin32.zip だけでした。

ActiveRuby? や Apollo 利用な方は、適当なディレクトリにコピーしてください。

(see. ruby -e 'p $:' )

originalfiles/test.rb の先頭を読んで、サーバとの接続テストをしてください。 後は、お好きに (^^;

作り方

Cygwin版

Cygwin-1.3.9 にて、mysql-3.23.47 の client のみをコンパイル。 zlib をスタティックにリンクするため、zlib-1.1.3 をソースから コンパイルしてlibzstatic.a として利用。upx かけてます。

mysql-ruby-2.4.2 における変更点は extconf.rbの修正

 $ cat extconf.rb
 require 'mkmf'
 have_library('zstatic')
 inc, lib = dir_config('mysql', '/usr/local')
 find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql") or exit 1
 # If you have error such as 'undefined symbol', delete '#' mark follow
 # lines:
 #have_library('m')
 #have_library('z')
 have_header('mysql.h') or have_header('mysql/mysql.h') or exit 1
 create_makefile("mysql")

mingw32版

libmysqlclient MinGW port http://www.johnydog.cz/projects.php にあった、 MySQL 3.23.43 mingw Source を利用。

ちょっとだけ修正。 (クロス対応じゃなくするのと、STDCALLの問題回避)

 #
 --- Makefile.org        Thu Oct  4 01:52:38 2001
 +++ Makefile    Wed Jan 23 21:59:39 2002
 @@ -14,18 +14,18 @@
  # team. Please see http://www.mysql.com in that case.
  #

 -CROSS_DIR = /usr/local/cross-tools/i386-mingw32msvc
 -CFLAGS = -O2 -Wall
 +CROSS_DIR = /usr/local/mingw
 +CFLAGS = -Os -Wall
  LIBS =
  INCLUDES = -I./include

  INSTALL_INCLUDES = $(CROSS_DIR)/include/mysql/
  INSTALL_LIBS = $(CROSS_DIR)/lib/

 -CC = $(CROSS_DIR)/bin/gcc
 -RANLIB = $(CROSS_DIR)/bin/ranlib
 -AR = $(CROSS_DIR)/bin/ar
 -ARFLAGS = cr
 +CC = gcc -bmingw #$(CROSS_DIR)/bin/gcc
 +#RANLIB = $(CROSS_DIR)/bin/ranlib
 +#AR = $(CROSS_DIR)/bin/ar
 +ARFLAGS = cru
  RM = rm -f
  CP = cp
  MV = mv
 @@ -83,4 +83,4 @@
  clean:
         rm -f $(OBJECTS) libmysqlclient.a

 -
 \ No newline at end of file
 +
 --- include/mysql.h-orig        Thu Oct 18 01:24:52 2001
 +++ include/mysql.h     Wed Jan 23 21:03:18 2002
 @@ -48,6 +48,10 @@
  #else
  #define STDCALL __stdcall
  #endif

 +#if !defined(__MINGW32__)
 +#define STDCALL
 +#endif
 +
  typedef char * gptr;

  #ifndef ST_USED_MEM_DEFINED

Ruby MySQLでは、標準の extconf.rb では libmysqlclient のリンクが解決されないので書き換えた。wsock32 と、zlib も追加。

 $ cat extconf.rb
 require 'mkmf'
 inc, lib = dir_config('mysql', '/usr/local')

 have_library('z')
 have_library('wsock32')
 # find_library('mysqlclient', 'mysql_query', lib, "#{lib}/mysql") or exit 1
 have_library('mysqlclient')

 # If you have error such as 'undefined symbol', delete '#' mark follow
 # lines:
 #have_library('m')
 have_header('mysql.h') or have_header('mysql/mysql.h') or exit 1
 create_makefile("mysql")

mswin32版

http://www.sfc.keio.ac.jp/~s01397ms/d/?date=20020201#p06 を見て思い出した。

http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ の mswin32-ruby16.lib を適当にコピーして、mingw32版の Makefile の $(LDSHARED)行の、-lmingw32-ruby16 を -lmswin32-ruby16 に変更しただけです :-)

ruby -i.bak -pe 'sub(/mingw32-/, "mswin32-")' Makefile くらい

ちゃんと、テストは通ってます。

http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/33461?33335-33630 に、試行錯誤がつづられてます。

リンク

履歴

2002-02-04  2.4.2-1
 * mswin32版と install.rb を追加。

2002-01-29  2.4.2
 * 配布開始

コメント、ぷりぃず

(bbs plugin is disabled).

暗黒の心霊写真 - 篠澤直子 (2010-01-11 (月) 04:23:39)

暗黒の心霊写真集で恐怖増殖中! http://candice.h.fc2.com/ (comment plugin is disabled).

Windows + Ruby - HN (2003-09-13 (土) 19:52:09)

Windows + Ruby でデータベースプログラミングするには、 今のところ、このバイナリ + Ruby 1.6 + Ruby/DBI を 使うのがよさそうですね(それ以外に手はない・・・?) あ、ODBCっていう手がある?

うーん、でもちょっと気持ち悪い。

(comment plugin is disabled).
Last modified:2010/01/29 23:29:44
Keyword(s):
References: