Last active
May 29, 2022 13:33
-
-
Save ta1kt0me/6a7058d16621785d4f7038bde6cd3b98 to your computer and use it in GitHub Desktop.
Add frozen string literal comment into generated files in rails v5.1.0
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
A simpler version of this might be
return unless defined?(::Rails::Generators) module RailsGeneratorFrozenStringLiteralPrepend RUBY_EXTENSIONS = %w[.rb .rake] def render return super unless RUBY_EXTENSIONS.include? File.extname(self.destination) "# frozen_string_literal: true\n\n" + super end end Thor::Actions::CreateFile.prepend RailsGeneratorFrozenStringLiteralPrepend
Where did you that?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
A simpler version of this might be