From: Tanaka Akira Date: 2004-02-09T16:05:30+09:00 Subject: [ruby-dev:22844] Re: relative load/require (Re: Re: $: trick in test/*) In article <1076059853.579160.21426.nullmailer@picachu.netlab.jp>, matz@ruby-lang.org (Yukihiro Matsumoto) writes: > ですね。実装者としては > > * シンボリックリンクからの正規化をするかどうか > * する場合、それはrequireを呼ぶ前にするのか、requireでする > のか > > というところが気になります。 私は require を呼ぶ前に行うことを想定しています。このやりかたは [ruby-dev:22796] の最後でも述べたとおり重複ロードを防げない場合がある という問題がありますが、[ruby-dev:22797] の考え方と矛盾しない (気がす る) という利点があり、また、$" に require の引数がある程度残るため、 ext/dbm/testdbm.rb:if $".grep(/\bdbm.so\b/).empty? lib/irb/ext/use-loader.rb: if !$".include?("irb/cmd/load") というような用法を (あまり) 壊さないで済むからです。ただ、このような用 法は同名のライブラリがあったときに対処できないため、最終的には [ruby-dev:22775] で触れられている「requireされるものを探すメソッド」が 正しいようにも思います。 ただ、さらに考えているとシンボリックリンクの展開を行わない、というやり かたも悪くないかもしれないという気もして来ました。私は xxx.rb と xxx/*.rb という構成のライブラリを設置するのにシンボリックリンクを 2つ 作るのが嫌だという理由によって、xxx.rb へのシンボリックリンクだけを作っ て、xxx/*.rb は xxx.rb のシンボリックリンクを展開した場所からの相対パ スで読み込むということを考えたわけです。しかし、[ruby-ext:01557] のよ うな機構があれば、xxx.rb を作らずに、xxx へのシンボリックリンクだけで 済むので、これはこれで 1つで済むことになります。しかし、require はそれ ですむかもしれませんが、実行ファイルをシンボリックリンクするときにはや はり欲しくなるように思うので、まだはっきりとは意見が固まっていません。 > どれもあんまりピンとこないですねえ。 そうなんですよねぇ。誰かいい名前を思いつく人はいませんか? -- [田中 哲][たなか あきら][Tanaka Akira]