前提条件
- Ruby 3.1.0
- Rails 7.0.4
背景
file.txtのフルパス(dir/dir2/dir3/file.txt)を表示させたい。
└── dir
└── dir2
└── dir3
└── file.txt
しかし先頭・末尾の/(スラッシュ)有無が変数間で様々である場合、正常にリンクを結合できないことがある。
変数代入
dir1 = "dir/dir2/dir3" #末尾に/(スラッシュ)なし
dir2 = "dir/dir2/dir3/" #末尾に/(スラッシュ)あり
file1 = "file.txt" #先頭に/(スラッシュ)なし
file2 = "/file.txt" #先頭に/(スラッシュ)あり
コンソール
irb(main)> dir1 + file1
=> "dir/dir2/dir3file.txt" #結合失敗
irb(main)> dir2 + file2
=> "dir/dir2/dir3//file.txt" #結合失敗
上記のように/(スラッシュ)有無が混合していると、結合させる変数の組合せを考えるのに混乱してしまう。
方法
File.joinを使用してリンクの結合をする
Fileクラスのjoinメソッドを使うことで、どの組合せでも正常に結合することができる。
コンソール
irb(main)> File(dir1, file1)
=> "dir/dir2/dir3/file.txt"
irb(main)> File(dir1, file2)
=> "dir/dir2/dir3/file.txt"
irb(main)> File(dir2, file1)
=> "dir/dir2/dir3/file.txt"
irb(main)> File(dir2, file2)
=> "dir/dir2/dir3/file.txt"
参考