Techioz Blog

なぜ File.expand_path(FILE) なのでしょうか?

概要

私は Ruby と、Sinatra や Rails などのフレームワークを研究していて、次のようなコードを目にしました。

File.expand_path(..., __FILE__) # this returns something like /Users/.../app/something.rb

単に次から始めるのではなく、

File.expand_path(..., ".") # this returns something like /Users/.../app

どちらも有効な既知のパスを返すため、「.」ではなく __FILE__ から移動を開始する理由はありますか?

解決策

dir または (FILE) は、必ずしも「.」と同じであるとは限りません。前者はファイルの場所です。後者は、メイン コマンドが呼び出された場所 (または、Dir.chdir などのコマンドによって変更された場所) です。