まつもと ゆきひろです

In message "[ruby-dev:13653] Re: [ruby-ext:01803] Re: Ruby/SDL on PS2 LinuxKit"
    on 01/06/26, Yukihiro Matsumoto <matz / zetabits.com> writes:

||それより同じ名前にしたくなるのは
|| o 初めはfoo.rbで提供していた
|| o 遅いのでCで書き直してfoo.soを提供
|| o そのままfoo.soだけをpackagingすると以前にインストールさ
||   れてたfoo.rbが残り、こちらが呼ばれてしまうのでまずい
|| o しかたないからrequire 'foo.so'だけのfoo.rbも用意しよう
||ってな感じなのかなと思ってます。
||uninstallがないというのがまずいというか。
|
|それに対処するためならむしろ.soを優先するんだと思うんです。

なんか発散しそうなので、珍しいことですが主導権をとります。

まず、以下を前提とします。

  * .rb優先は変えない

    互換性のためと、.rbによるgenericな設定という使い方に私自
    身がこだわっているので。

  * サーチパスの後の.rbを優先しない

    セキュリティ(.rbによる.soのすり替え)問題に対処するため

それを満たす対応は以下のいずれかだと思います。

  * $arch-$osを後に回す[ruby-ext:01788]
  * 検索時に$arch-$osを付加して検索[ruby-ext:01796]

後者の方がエレガントですが、少なくとも1.6では前者で対応する
んじゃないかと。

あと、決めるべきは

  * バージョンが付いたものとつかないもののどちらを優先するか
  * site_rubyを優先するかしないか

ですね。今のところ、前者はバージョンが付いたもの優先でよいの
ではないかと思ってます。後者はにわかに判断できません。今まで
はsite_ruby優先だったわけですが、PerlやPythonでは優先ではな
いようですね。

                                まつもと ゆきひろ /:|)