In article <1075472089.309628.19022.nullmailer / picachu.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> つまり、
>
>   * 相対パスのロードは推奨されない
>   * 相対パスで読み込むのは.soファイルではない
>
> だろうからrequireに機能を追加しない方が良いだろうということ
> です。

えぇと、理由がわかりません。なぜ推奨されないのでしょう?

たとえば、あるプログラム (アプリケーションないしライブラリ) をインストー
ルという手間をかけずに利用したいとします。インストールする前にテストし
たいというのもそうですし、開発中に修正するたびにいちいちインストールし
ないと実行できないというのでは面倒です。ここでそのプログラムが内部で複
数のファイルに分かれていて require しているとすると、現状では $: をい
じったりカレントディレクトリに頼る必要があります。相対パスで読み込めれ
ば (インストール後のディレクトリ構造と同じ構造で開発しているとすれば)
$: をいじる必要もなく、カレントディレクトリが違っていてもテストできて
嬉しいと思います。

また、Kernel#load が .so を読み込まないのはその通りですが、今議論して
いるものが .so を読み込むべきでないという理由も分かりません。

何らかの理由によって推奨されず、その非推奨というメッセージを伝えるため
に require とは異なる仕様にするという話なら理解できます。しかし、最初
の推奨されない理由がわからないので、仕様をどのあたりにするのがいいのか
判断できません。

> |ふむ。require も $" にはフルパスで記録するというのはどうでしょう?
> 
> これは良いアイディアだと思います。時間が取れたら実装します。

一応述べておくと、フルパスにしてもシンボリックリンクを考えると重複を検
出できない場合があります。これを解決するにはシンボリックリンクを展開し
なければなりませんが、まぁ、これが問題になるケースは多くないかな。
-- 
[田中 哲][たなか あきら][Tanaka Akira]