Rubyで見かけるアンダーバーふたつで囲まれた奴ら。
__FILE__ __dir__
き、きみたちは一体何?どこからきたの?
__FILE__:現在実行しているファイル
ruby_basic.rb
というファイルに以下のコードを書いて実行してみる。
puts "__FILE__: #{__FILE__}" => __FILE__: ruby_basic.rb
実行しているファイル名が出てくる。
# 同じ puts "$0: #{$0}" => $0: ruby_basic.rb
きっちりした解説だと、「現在のソースファイル名が格納された疑似変数」。
絶対パスが返ってくるわけではないので、絶対パスを取りたいときはFile.expand_path
を使う。
p __FILE__ p File.expand_path(__FILE__) => "ruby_basic.rb" "/Users/<username>/rubybook/lib/ruby_basic.rb"
__dir__:現在実行しているファイルがあるディレクトリ
p "__dir__: #{__dir__}" =>"__dir__: /Users/<username>/rubybook/lib"