RubyOnWindows

2004-10-16 15:49:29 +0900 (1420d); rev 4

Windows で Ruby を使うぞ!

処理系リンク

http://www.dm4lab.to/~usa/ruby/
Mswin32 版メインメンテナのうささんによるページ。 Mswin32 版 Ruby のバイナリ配布その他。
ActiveScriptRuby
Active Script ホストになれる ruby。Mswin32 版ベース。
http://ftp.ruby-lang.org/pub/ruby/binaries/
わたなべひろふみさんによる Ruby Binaries。 Mswin32 版・Cygwin 版・Mingw 版・Djgpp 版がある。

ビルド環境問題

Windows で動く ruby にはビルド環境によっていくつか種類がある。

mswin32 版と mingw は msvcrt.dll を使う。 Cygwin は cygwin1.dll を使う。 bcc32 は知らんが独自だと思う。 interix はもちろん SFU の libc を使う。

で、どれを使えばいいか結論だけ言うと、 Unix と CUI ラブな人は Cygwin を全部入れて Cygwin 版をコンパイルすべし。 それ以外の人は ActiveScriptRuby (mswin32) を使うのが吉。 bcc32 はまだ不安定ぽいのでもう少し避けたほうがよい。 interix は安定度では比較にもならない。

スレッド + ソケット問題

Ruby スレッドは実装に select を使っている。 ところが Win32 ではソケットしか select できないため、 マルチスレッドでソケット以外の I/O をするとブロックする。

解決策としては ?WaitForMultipleObjectsEx を使えばよいらしい (?)。 ただし ?WaitForMultipleObjectsEx には同時に待てるオブジェクト数の 制限がある (MAXIMUM_WAIT_OBJECTS = 65) ので、 カーネルオブジェクトをカスケードして使わないとだめらしい (?)。

Win32OLE

OLE オートメーションと言うか COM が使える。 ようするに IE とか Word とか Excel が操作できる。 Ruby 1.8 標準添付。

http://homepage1.nifty.com/markey/ruby/win32ole/
Win32OLE ライブラリ公式?サイト (助田さん)
http://member.nifty.ne.jp/masarl/article/ruby-win32ole.html
「RubyによるWin32OLEプログラミング」(石井勝さん)
http://www.tech-notes.dyndns.org
「My Technical Notes」

ActiveScriptRuby

ActiveScriptRuby


system revision 1.162