ただです。
(今読み返してみたら凄まじい長文になっていたのでかなり削除しました。それ
でもまだ長いですが。)

> なので、4.1.x 環境で作成した MySQL/Ruby を 4.0.9 で動かそうとしているの
> ではないかと思います。
> 
> 古いバージョンで作成した MySQL/Ruby を、新しいバージョンの MySQL 環境で
> 動かしたら多分動くと思いますが、その逆はダメだと思います。
> 

そのとおりでした。
4.0xで作成したMySQL/Rubyのバイナリが見当たらない(リンク切ればかり)
なので、不本意ながらソース(?)をダウンロードしてきてmakeを試みているとこ
ろです。

これがまたうまくいきません。
http://tmtm.org/downloads/mysql/ruby/
で
mysql-ruby-2.7.tar.gz
をダウンロード&回答して、回答先でextconf.rbを実行してみたのですが、
今度はmysqlclientにmysql_queryが無いといわれます。

# 実行結果ここから ----------------------------------

C:\mr>ruby extconf.rb
checking for mysql_query() in mysqlclient.lib... no
checking for main() in m.lib... yes
(略)
checking for mysql_query() in mysqlclient.lib... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

#実行結果ここまで ----------------------------------

「いろんな理由でうまくMakefileを作れないからオプションを指定しろ」
って言われても、どんなオプションを指定すればよいのやら。

mkmf.logを見ると

#mkmf.logここから ----------------------------------

"cl -nologo -Feconftest -I. -IC:/usr/local/lib/ruby/1.8/i386-mswin32 -I.
-IC:/usr/local/lib/ruby/1.8/i386-mswin32 -I/usr/local/include  -MD -Zi
-O2b2xg- -G6 conftest.c   msvcrt-ruby18-static.lib mysqlclient.lib
oldnames.lib user32.lib advapi32.lib ws2_32.lib   -link    -libpath:"."
-libpath:"C:/usr/local/lib" -libpath:"/usr/local/lib" -stack:0x2000000"
checked program was:
/* begin */
1: #define WIN32_LEAN_AND_MEAN
2: #include <winsock2.h>
3: #include <windows.h>
4:
5: /*top*/
6: int main() { return 0; }
7: int t() { void ((*volatile p)()); p = (void ((*)()))mysql_query;
return 0; }
/* end */

#mkmf.logここまで ----------------------------------

こういうメッセージが大量に出力されていました。
何がなんだかサッパリ。



ここまできて、ふと我に返る。

この3日間。全くプログラムが進んでいません。

require "mysql"
このたった1行を実行するために、
・MySQL/Rubyをインストールし、
・mysql.soの依存関係を調べるためにDependency Viewerをインストールし、
・依存関係に問題がある関数の適用バージョンを調査し、
・ホスティング会社のMySQL/Rubyが正常に動作していることを確認し、
・私のPCのMySQLで動作するMySQL/Rubyのバイナリが見つからずに断念し、
・自力でmakeするためにソースをダウンロードし、
・make以前にextconf.rbすら実行できず、原因を調査し...

前提条件を満たすための前提条件を満たすための前提条件を満たすための...
という作業を延々と続けています。


これってどうなのかと。

プログラマの皆さんは「足りなきゃ足しゃえ〜やん」というノリで
TRY&ERRORを繰り返して対策前進すればいいと思うのですが、これを
企業向けに提案するのは難しいのでは?

ちょっと大きな企業なると、プログラム設計、基盤設計、運用設計が
明確に分かれてます。

基盤部分(OSとかMySQLとかRubyとか)のバージョンはサイト内で統一する
ことが多く、プログラムの都合でホイホイ追加したり変更したりという
ことはなかなか出来ないんです。

なので、プログラム担当者と基盤担当者が事前に綿密な打ち合わせをして、
基盤設計でどんな前提が必要なのかを検討する必要がありますが、通常は
基盤担当や運用設計はこういった依存関係の扱いに慣れていません。

仮に「今度の開発はRubyでやりましょう」と提案したとして、
プログラマには「必要な依存関係を全て事前に洗い出せ」
基盤担当者には「要求された依存関係を満たすことを確認せよ」
運用担当者には「障害が発生したら原因がプログラムか基盤か判断せよ」
という要求をすることになると思います。
これって全員から「無理」と言われそう。

C,PERL,PHPでもいろいろ問題はありましたが、まだ解決に向かっている実感があ
りました。
Rubyは上記のとおりどんどん問題が拡散して心が折れそうになります。(少なく
ともMySQLくらいすんなり繋がって欲しい。)

みんなこんなに苦労してるんでしょうか(こんなに苦労しているのは私だけ?)