Memento memo.

Today I Learned.

Ruby2.3系での"Missing frozen string literal comment"への対処

Missing frozen string literal comment

Ruby2.3系でRubocopを実行したら Missing frozen string literal comment と怒られました。

ファイルの先頭に以下のmagic commentが必要とのこと。

# frozen_string_literal: true

これによってRubyのStringリテラルが勝手にfreezeされてimmutableになるらしいです。 Ruby3系では基本的にimmutableになる予定なので、その互換のためのようです。便利な上に移行も楽そうですね。

参考:

qiita.com

対処

Rubocopで Missing frozen string literal comment が出てるファイルの先頭行にmagic commentを追記すればよいので、適当なワンライナーで一括対処できます。

rubocop | grep 'Missing frozen string' | cut -d: -f1 | xargs gsed -i -e '1i\# frozen_string_literal: true\n'

BSDsedのオプション苦手なのでgsed使ってます。

Effective Ruby

Effective Ruby