パスの連結はよろしくないらしい

以下のようにファイルパスを指定していたらrobocopに指摘されました。

deleted_image = File.new(Rails.root.join(‘public/deleted.jpg’), ‘r’)

なんで良くないのか分からなかったので調べてみたところ以下の記事を発見しました。

 

 

qiita.com

 

どうやらパスを連結していたのが良くなかったようです。

パスを連結するとバグをうみやすいためだそうです。

以下の説明は上記記事の説明です。

ファイルパスの連結はバグを生みやすい問題です。セパレータを重複して書いてしまったり、あるいはセパレータを抜かして書いてしまうと、意図しないパスを表してしまうことがあります。

# bad

Rails.root.join('app/models/goober')

File.join(Rails.root, 'app/models/goober')

"#{Rails.root}/app/models/goober"

 

# good

Rails.root.join('app', 'models', 'goober')

 

 

以下のように、パスの連結をやめてgoodと同じように書き換えたところ、無事robocopの指摘が消えました!!

deleted_image = File.new(Rails.root.join(‘public’, ‘deleted.jpg’), ‘r’)

 

感想その他

リポジトリにいるrobocopのボットが可愛いキャラなので指摘されると

「直してあげなきゃ!」って気持ちになります!!

相手が人間だったら「基本的なことできてなくてすみませんうわわわわ」となるであろう部分を可愛いボットが指摘してくれるのとても良いです!

書き方のマナーを指摘してくれてありがたい!!