🙆
[Bug #20920] load 'foo.rb' した時の __FILE__ の値の話
[Bug #20920] When loading a file, FILE gets relative paths expanded only when they start with "./"
- 次のように
loadするときに./がついているかどうかが__FILE__に影響がある話
$ cat foo.rb
puts __FILE__
foo.rb
$ ruby ./foo.rb
./foo.rb
$ ruby -e 'load "foo.rb"'
foo.rb
$ ruby -e 'load "./foo.rb"'
/full/path/to/foo.rb
-
__FILE__は現在のソースファイル名を返す疑似変数ですね- https://docs.ruby-lang.org/ja/latest/doc/spec=2fvariables.html#pseudo
- 明示的に full path を取得する場合は
File.expand_path(__FILE__)を利用する必要がある
-
loadする時に./がついていると full path で展開するんですね、へえー - これなんですが
load "foo.rb"のみ full path に変更することが matz から提案されているみたいですね
$ ruby foo.rb
foo.rb # 現状維持
$ ruby ./foo.rb
./foo.rb # 現状維持
$ ruby -e 'load "foo.rb"'
foo.rb # これを full path に変更する
$ ruby -e 'load "./foo.rb"'
/full/path/to/foo.rb # 現状維持
Discussion