🎉

RubyのFile.expand_pathについて

2023/10/06に公開

概要

File.expand_path(file_name [, dir_string] )について記載する。expand_pathは、想定パスから絶対パスを取得する関数である。dir_stringを指定した場合、dir_stringを基準にし、指定しない場合、実行プロセスのパスを基準にします。

使ってみる

次のディレクトリ構造を想定しています。

/home/russ/src/tachibana
|--lib
|  |--data
|  |  |--holidays.csv
|  |--lib.rb

またlib.rbの実装は、次の通りです。

pp Dir.pwd
pp File.expand_path('../data/holidays.csv')
pp File.expand_path('../data/holidays.csv', __FILE__)

tachibanaディレクトリで実行する

russ@penguin:~/src/tachibana$ ruby lib/lib.rb 
"/home/russ/src/tachibana" # 実行プロセスのパス
"/home/russ/src/data/holidays.csv" # dir_stringに__FILE__を指定しない
"/home/russ/src/tachibana/lib/data/holidays.csv" # dir_stringに__FILE__を指定する

tachibana/libディレクトリで実行する

russ@penguin:~/src/tachibana/lib$ ruby lib.rb 
"/home/russ/src/tachibana/lib" # 実行プロセスのパス
"/home/russ/src/tachibana/data/holidays.csv" # dir_stringに__FILE__を指定しない
"/home/russ/src/tachibana/lib/data/holidays.csv" # dir_stringに__FILE__を指定する

以上です。

Discussion