あおきです。
何度もすみません。もう少しだけおつきあいください。

  In Mail "[ruby-list:15509] Re: mail library"
    matz / netlab.co.jp (Yukihiro Matsumoto) wrote:

> まつもと ゆきひろです

> |それが広まってきたころになってからなにか変更をしたくなったとします。
> |たとえばライブラリを階層化したいとか、ファイルの位置が変えられない
> |のが不便だとか、ファイルの一部だけロードしたいとかそういうことです。
> |それに対応しようとしたら、requireの文字列の中からライブラリ名を表す
> |部分をとりださないといけなくなります。それには feature.split('/')][0]を
> |とればいいかというと、絶対にそうはならない。
> 
> これがちょっと分からないんです。
> 
> Perlとかでもディレクトリ構成を使ってますよね。
> 違いと言えば / を使っているか、:: を使って一段抽象化している
> かくらいでしょうか。
> 
> で、現在のrequire一見ファイル名を指定しているように見えるか
> もしれませんが、実はこの / はPerlの :: と同様の階層化の手段
> であると考えると、use_lib ではなく、require で対応できそうな
> 気がしますが、いかがなものでしょう?

ぼくが心配しているのは、階層化の手段以外に使うひとがいたり、
あるいはすでにあったりするとやだな、ということです。
「ディレクトリ部分はライブラリを表す」というのはあくまで
「お約束」ですよね。で、ぼくが心配なのはそのような約束を
守らないスクリプトなんです。

具体例を挙げろといわれるとちょっと思いつかないのですが、
「できることはだれかがやる」のが歴史の常だと思うので、今は
だれも思いつかないことでも、未来にだれがなにを思いつくか
わからないですよね(while...doのように ^^;;)。

ですからまつもとさんが、「そういう邪悪なことをするスクリプト
には対応しない」とおっしゃるのであればそれでいいと思うので、
現状のままで文句は言いません。
ただ、それならそれで「対応しません」とはっきり言って(書いて)
おくとさらによいと思いますが…

# そうです、ぼくは潔癖性&&心配性です ^^;;


> すると、みなさんが新しい use_lib を使うのを待たなくてもほと
> んどのコードがそのまま対応できるわけなんですが、なにか見落と
> してるんでしょうか。

今あるコードをなおす必要はないと思います。
あくまでuse_libを使う対象として考えているのは「ライブラリ」と
して複数のファイルがまとまりを持っているものだけで、今あるものに
適用することは想定していません。また、ライブラリにしてもrequireは
「禁止」ではなくて、これから require 'net/smtp' としても構わない。
ただし、「将来もそれで大丈夫かどうかは保証しない、これから
ライブラリを使うなら use_lib が好ましい」ということです。
-------------------------------------------------------------------
あおきみねろう     site: http://www1.u-netsurf.ne.jp/~brew/mine/jp/