指定されたモジュールが見つかりません。
FastCGI で遊んでるんだけど、RMagick と MySQL まわりでエラーが。
126: 指定されたモジュールが見つかりません。 - C:/ruby-1.8.6/lib/ruby/site_ruby/1.8/i386-msvcrt/RMagick2.so (LoadError)
RMagick2.so とか mysql.so とかを読み込めないみたいだ。いろいろ試した結果、libmySQL.dll を Windows ディレクトリに放り込んだら mysql.so はいけるので、*.so が依存している DLL が読めてないっぽい。
Windows ディレクトリに必要な DLL を全部入れれば動くんだろうけど、そんなことはしたくないので、DLL のロードパスを指定したいところ。普通のプロセスは DLL をロードするときに環境変数 PATH から探してるはずで、おそらく(意図的に?)環境変数が渡されてないと予想してみる。調べてみると FastCGIConfig で環境変数を渡せるみたいなので、Apache が知っている PATH を渡してみた。
LoadModule fastcgi_module modules/mod_fastcgi.so FastCgiConfig -initial-env PATH <Location /fastcgi> SetHandler fastcgi-script Options ExecCGI </Location>
これで無事 mysql.so も RMagick2.so も読み込めるように。本当は実際に使うDLLが入っている場所だけを渡すのがいいんだろう。