Rails で bin/rails g migration create_articles
といったようにマイグレーションファイルをジェネレータで作る機会が多いと思う。
% bin/rails g migration create_articles title:string invoke active_record create db/migrate/20171003150532_create_articles.rb % cat db/migrate/20171003150532_create_articles.rb class CreateArticles < ActiveRecord::Migration[5.1] def change create_table :articles do |t| t.string :title end end end
先日 Rails 本体は frozen string literal の対応がされたが、ジェネレーターで作られる Rails アプリケーションコードには frozen string literal マジックコメントは入らないため、各自入れることになる (マイグレーションに限らずジェネレータ全般の話) 。
根拠としては以下の PR でジェネレータのテンプレートにそのマジックコメントを入れる対応を送ったが、コアチームによって Close されている。詳しくはリンク先。
なので現実線として、upstream のジェネレータに頼ることなく frozen string literal マジックコメントを Rails アプリケーションコードに入れるには、エディタに設定するなり、RuboCop の Style/FrozenStringLiteralComment
cop で autocorrect するなりの手段を講じることになる。
あとはコアチームを説得できる材料を持って Issue を立てるなども考えられるので、そちらの線で本気で対応しようと考える場合は考慮してみてもよいかもしれない (個人的に難易度高い気がしていますが) 。
RubyKaigi 2017 のときに、Rails コントリビューター勢での雑談でこのあたり少し話題に挙ったのを思い出したので、話題に挙った内容で記していない点や異なる点はあるが記しておいた。