From: matz@... (Yukihiro Matsumoto) Date: 2001-12-05T01:50:52+09:00 Subject: [ruby-list:32775] Re: require "./xxx" の「カレントディレクトリ」の意味 まつもと ゆきひろです In message "[ruby-list:32764] Re: require "./xxx" の「カレントディレクトリ」の意味" on 01/12/04, akira yamada / やまだあきら writes: |In article 32761, <20011204142208.41EC.GGB03124@nifty.ne.jp> |T>  でも、 Unix 系でも GUI 系アプリが増えれば、Ruby でもその需要は増えると |T> 思う。 | |GUI系であることと, そういうことをしたいこととは |互いに関係のないことだと思います. 私もそう思います。 Windowsではソフトそれぞれごとにディレクトリを占有するという 分類軸なのに対し、UNIXでは実行ファイル、ライブラリ、設定ファ イルなど種別毎の分類軸を用いるという慣習や文化の違いだと思い ます。 ここでどちらが優れているなどというつもりはまったくないのです が、単に考え方の違いで需要の問題ではないと思います。 |T>  Cソースファイルの include と Ruby スクリプトの require との対比で考え |T> ると、どちらもソース/スクリプトの解釈(コンパイル/パーシング)にかかる |T> ものであって、実行に関係するものではない。 たぶん見落としていらっしゃると思うのですが、コンパイルのカレ ントディレクトリ情報は保存・活用されることのない情報ですが、 実行時のカレントディレクトリ情報はそうではありません。 ですから、 | Dir.chdir("/foo/bar") | open('./baz.rb', 'r') {|x| ...} | require('./baz.rb') | |実際にこういうコードを書くかどうかは別として |requireでの . と open での . の意味が違っちゃうのは |どんなものなんでしょうか. ということが発生します。コンパイルフェーズが別の言語では発生 しません。 で、上記の「意味の違い」は私には許容できません。 |この変更はあるスクリプトを置くディレクトリ全体を |一つのアプリケーションが独占してしまうことになる(ような気がする)ので |うれしくないことの方が多いのではないかと個人的には思います. それこそがまさにたけさんの望んでいることですよね。つまり、 Windows文化をRubyに輸入したいという。明示的に意識しているか どうかは分かりませんが。 で、私はあんまりそれには乗り気ではないんです。 たぶん、requireとは違う(Windows用の?)loadシステムを提供する 方が良いんじゃないんですかね。 まつもと ゆきひろ /:|)