From: "akira yamada / やまだあきら" Date: 2001-12-04T20:17:01+09:00 Subject: [ruby-list:32764] Re: require "./xxx" の「カレントディレクトリ」の意味 Tue, 4 Dec 2001 19:49:49 +0900 頃の Mail-Count: 32761 Subject: [ruby-list:32761] Re: require "./xxx" の「カレントディレクトリ」の意味 についてのお話にて Take tk さん曰く… (T == Take_tk さん) >> いつもりです。Windows系はそういう関連ファイルを同じディレク >> トリに納めるソフトが多いんでやりたくなるんでしょうね。 In article 32761, <20011204142208.41EC.GGB03124@nifty.ne.jp> T>  でも、 Unix 系でも GUI 系アプリが増えれば、Ruby でもその需要は増えると T> 思う。 GUI系であることと, そういうことをしたいこととは 互いに関係のないことだと思います. T>  Cソースファイルの include と Ruby スクリプトの require との対比で考え T> ると、どちらもソース/スクリプトの解釈(コンパイル/パーシング)にかかる T> ものであって、実行に関係するものではない。 解釈ってのがよくわかんないんですが… # Rubyのrequireって「実行」されない? T>  とはいえ、Ruby が通常扱うパス文字列は実行時のそれであり、require は実 T> 行時用のパス文字列のルーティンのコードを利用している。よって、特別扱いの T> ために新たなコードを加えるのは「嬉しくない」と理解しました。 Dir.chdir("/foo/bar") open('./baz.rb', 'r') {|x| ...} require('./baz.rb') 実際にこういうコードを書くかどうかは別として requireでの . と open での . の意味が違っちゃうのは どんなものなんでしょうか. T>  スクリプトをパースする前にそのファイルの所在ディレクトリを $: の先頭に T> 入れる、というのはどうでしょうか?。以下と同様な仕組みを追加する。 T> T> $:.delete File.dirname __FILE__ T> $:.unshift File.dirname __FILE__ T> T> require "xxx" ## 同じディレクトリにあればそれが優先される。 この変更はあるスクリプトを置くディレクトリ全体を 一つのアプリケーションが独占してしまうことになる(ような気がする)ので うれしくないことの方が多いのではないかと個人的には思います. 今だによくわからないんですが, そうまでして今までの挙動を変えてしまいたいことなんでしょうか… 上の二行で済むのならその二行書くというのでは本当にダメなんですかね? -- やまだ あきら (akira@arika.org, akira@ruby-lang.org, akira@debian.org or akira@linux.or.jp)