RubyのFile.expand_pathメソッドで相対パスを絶対パスに変換する方法

Ruby

Rubyにはファイルやディレクトリのパスを操作するための便利なメソッドがいくつかあります。その中でも、相対パスを絶対パスに変換するために使われるのが、File.expand_pathメソッドです。このメソッドを使うことで、相対パスが現在の作業ディレクトリを基にした絶対パスに変換されます。

File.expand_pathとは?

File.expand_pathは、指定されたパスを絶対パスに変換するためのメソッドです。このメソッドを使うと、引数として与えた相対パスを、現在のディレクトリ(作業ディレクトリ)を基準にした絶対パスに変換することができます。

例えば、現在のディレクトリが/home/userで、相対パス./docs/file.txtを渡すと、結果として/home/user/docs/file.txtという絶対パスが得られます。

File.expand_pathの基本的な使い方

このメソッドの基本的な使用方法は非常に簡単です。以下の例を見てみましょう。

path = "./docs/file.txt"
absolute_path = File.expand_path(path)
puts absolute_path

上記のコードでは、相対パス./docs/file.txtを指定し、それを絶対パスに変換しています。出力は、現在の作業ディレクトリに基づいた絶対パスになります。

File.expand_pathの引数について

File.expand_pathメソッドは、主に2つの引数を受け取ります。

  • path: 絶対パスまたは相対パスを指定します。
  • dir: 任意の引数で、基準となるディレクトリを指定します。指定しない場合は、現在の作業ディレクトリが使用されます。

例えば、次のようにdir引数を指定することも可能です。

path = "file.txt"
dir = "/home/user/docs"
absolute_path = File.expand_path(path, dir)
puts absolute_path

この場合、file.txtという相対パスは、/home/user/docsを基準にして絶対パスに変換されます。

実際の使用例

実際にFile.expand_pathを使用するシナリオとして、例えばログファイルのパスを計算したい場合などが考えられます。

log_file_path = "logs/error.log"
log_absolute_path = File.expand_path(log_file_path, "/var/www/app")
puts log_absolute_path

上記のコードでは、/var/www/appディレクトリを基準にして、logs/error.logという相対パスを絶対パスに変換しています。

まとめ

File.expand_pathは、Rubyで相対パスを絶対パスに変換するために非常に便利なメソッドです。相対パスと基準ディレクトリを指定することで、簡単に絶対パスを得ることができます。ファイルの操作を行う際には、このメソッドを使うことで、より確実にファイルの位置を特定することができます。

コメント

タイトルとURLをコピーしました