【Ruby/rubocop】いつの間にかDir.[]の結果がソートされてた
こんにちは、しきゆらです。
今回は、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でいろいろ怒られたので調べつつ対応したのでメモしてみました。
丁度変更されたところを踏んだようで、知らずに更新したところはまってしまいました。
事前に確認しておくべきでした。
ということで、今回はここまで。
おわり