JanGaJan.com

Is fun? JOY!

Rails Generateで作ったrubyファイルにfrozen String Literalのコメントを追加する

rails generate したファイルにいちいちfrozen string literalのコメント追加するのは面倒ですよね。
ということでモンキーパッチ。

railsの5.1.0.beta1が公開されている時のmasterで試しました。 initializerに入れておけば動く。

Add frozen string literal comment into generated files in rails v5.1.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
module AddFrozenStringLiteralComment
  def add_frozen_string_literal_comment(dist)
    if File.exist?(dist) && File.extname(dist) == '.rb'
      File.open(dist, 'r') do |f|
        body = f.read

        File.open(dist, 'w') do |new_f|
          new_f.write("# frozen_string_literal: true\n" + body)
        end
      end
    end
  end
end

module GeneratorPrepend
  include AddFrozenStringLiteralComment

  def invoke!
    res = super
    add_frozen_string_literal_comment(existing_migration)
    res
  end
end

module TemplatePrepend
  include AddFrozenStringLiteralComment

  def template(source, *args, &block)
    res = super
    add_frozen_string_literal_comment(args.first)
    res
  end
end

Rails::Generators::Migration
Rails::Generators::Actions::CreateMigration.send :prepend, GeneratorPrepend
Rails::Generators::NamedBase.send :prepend, TemplatePrepend

Comments