ファイル名に〜(ホームディレクトリ)を指定した場合、以下のようにエラーになってしまいます。
filename = '~/file.txt'
f = File.open(filename, 'w')
f.puts("hello world")
f.close
$ ruby file_err.rb
file_err.rb:2:in `initialize': No such file or directory - ~/file.txt (Errno::ENOENT)
from file_err.rb:2:in `open'
from file_err.rb:2
このような場合は、絶対パスを取得できるexpand_pathメソッドを利用します。
filename = '~/file.txt'
f = File.open(File.expand_path(filename), 'w')
f.puts("hello world")
f.close
$ ruby file_expand_path.rb $ cat file.txt hello world