石井です。 Yukihiro Matsumoto writes: > 分らないでもないですね.でも,なんか気持ち悪いんですよ. > 今でもカレントディレクトリを入れてたりするんで(-Tを指定する > と外れる),大した差ではないとは思うんですが. > > 真面目に考えても良いんだけど…. 取り下げたといっておきながら、まだ未練があるので続けてしまいます。 まつもとさんが何に気持悪さを感じておられるのかはわかりませんが、 私も実はちょっと気持悪さを感じています。 というのも、たとえば、 $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__)) という動作を rubyが load (or requre)の度にやったりすると load (or requre) がネストしていたり、いくつもあったりしたときに $LOAD_PATH が延びちゃうんですね。 ●main.rb load "sub1.rb" load "sub2.rb" load "sub3.rb" とか ●main.rb load "sub1.rb" ●sub1.rb load "subsub1.rb" load "subsub2.rb" load "sub2.rb" とかなってると、プログラマの素朴な予想を裏切る動作をする可能性が。(^_^; そこんところがあって、お願いを取り下げたのです。 もういちど考えて見たのですが、"." が常にカレントディレクトリを表すように、 :basedir が常に その時点でのFile.expand_path(File.dirname(__FILE__)) を 意味するということにして、 $LOAD_PATH == [ :basedir, "/usr/local/xxxx", "/usr/local/yyyyy", "." ] みたいな表現が出来るといいかもしれません。 ( :basedir は、文字列でなければ、既存のディレクトリ名とぶつからないだろう というくらいのつもりで、:basedir で無ければいけないというわけではないの ですが) もう一歩進めて :basedir ではなくて、文字列を返す Procオブジェクトを LOAD_PATH 中に置けるようにするというのも面白いかも知れません。 ついでに 組み込み定数(?)として BASEDIR = proc { File.expand_path(File.dirname(__FILE__)) } を用意しておいて、ruby 起動時にオプションの状態によって、BASEDIR を $LOAD_PATH の先頭に入れることがある、、というふうにしてはどうでしょうか? と、思ったら File.expand_path(File.dirname(__FILE__))は、カレント ディレクトリを変更した後で評価すると、期待した値にならないんだっけ、、、 うーん。 というわけで、具体的な提案は出来ず仕舞いで、やっぱり要望は だせませんでした。^_^; ところで、-T って何ですか? 手元のリファレンスマニュアルで見つけられませんでした。 -- ┌─石井 毅────────────────────┐ └──isii / harmony.co.jp──isii@mirage.linc.or.jp─┘