【Ruby/rubocop】いつの間にかDir.[]の結果がソートされてた

2022年8月17日

こんにちは、しきゆらです。
今回は、Ruby2.7から3.1.2に更新したらいろいろ変わっていたのでメモしておきます。

変わったことに気づいたのは、タイトルにあるrubocopを回したら怒られたからでした。
ということで、怒られたrubocopの項目とRubyの更新点を今更ながら記載しておきます。


Lint/RedundantDirGlobSort

https://docs.rubocop.org/rubocop/cops_lint.html#lintredundantdirglobsort

タイトルの通り、Dir.[]の結果がRuby3.0からソートされるようになったようです。
書いていたコードでは、sortを自前でかけてたので怒られたようです。

リファレンスを見てみると、v3.0からsort: trueというオプションが付いていました。
最新: https://docs.ruby-lang.org/ja/latest/method/Dir/s/=5b=5d.html
2.7 : https://docs.ruby-lang.org/ja/2.7.0/method/Dir/s/=5b=5d.html

ということで、Ruby3.0以上を利用している方は特に指定しなくても結果がソートされるので、
自前でかけているのは不要コードなのでご注意。

Style/HashSyntax

https://docs.rubocop.org/rubocop/cops_style.html#stylehashsyntax

こちらも確認すると、Ruby3.1から連想配列のキーと同じ名前の変数をバリューにしてするときは省略できるようになったようです。
https://techracho.bpsinc.jp/hachi8833/2021_11_24/113383

なお、省略可能なだけでこれまで通りの記法でも問題ないようです。
Rubocopで怒られないようにする場合は、設定ファイルに以下のように書けばよい。

Style/HashSyntax:
  Enabled: false

まとめ

今回は、Ruby2.7から3.1にアップデートしたところ、rubocopでいろいろ怒られたので調べつつ対応したのでメモしてみました。
丁度変更されたところを踏んだようで、知らずに更新したところはまってしまいました。
事前に確認しておくべきでした。

ということで、今回はここまで。
おわり

Ruby

Posted by shikiyura