Java の File#getAbsolutePath で絶対パスを求めるような感じ。
Ruby では File.expand_path を使う。
サンプルコード。
#!/usr/bin/env ruby
paths = [
'/home/hoge/a/b/c.txt',
'./a/b/c.txt',
'/home/hoge/a/b',
'/home/hoge/a/b/',
'./a/b/',
]
paths.each{|path|
puts "#{path} => #{File.expand_path(path)}"
}
実行結果。
カレントディレクトリは絶対パス表記に変換される。末尾のスラッシュはなくなる。
/home/hoge/a/b/c.txt => /home/hoge/a/b/c.txt
./a/b/c.txt => /home/hoge/a/b/c.txt
/home/hoge/a/b => /home/hoge/a/b
/home/hoge/a/b/ => /home/hoge/a/b
./a/b/ => /home/hoge/a/b
Ruby 1.8.7 リファレンスマニュアルによるとこれ。
expand_path(path, default_dir = '.') -> String
path を絶対パスに展開した文字列を返します。 path が相対パスであれば default_dir を基準にします。
class File
プログラム用例 - 入出力 - ファイルパス には Java, Python, Ruby, Shell でのファイルパスの操作サンプルがざっくりまとまってて参考になる。
tags: ruby
Posted by NI-Lab. (@nilab)