diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-07-02 01:23:28 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-07-02 02:05:07 +0900 |
commit | 0ba55d2e0c251451eede1da069666eb15e86b2c7 (patch) | |
tree | 0577d96f740182c04fcf8a7f6bb8f31da1077eaf /activerecord/lib/active_record | |
parent | 310918f6a194bf5752fe1025930881756f5d8a8e (diff) | |
download | rails-0ba55d2e0c251451eede1da069666eb15e86b2c7.tar.gz rails-0ba55d2e0c251451eede1da069666eb15e86b2c7.tar.bz2 rails-0ba55d2e0c251451eede1da069666eb15e86b2c7.zip |
Fix `test_copying_migrations_preserving_magic_comments`
Since #29540, `# frozen_string_literal: true` included original
migration files.
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/migration.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/migration.rb b/activerecord/lib/active_record/migration.rb index 1ff1dcad43..42220b9a5e 100644 --- a/activerecord/lib/active_record/migration.rb +++ b/activerecord/lib/active_record/migration.rb @@ -863,15 +863,17 @@ module ActiveRecord source_migrations.each do |migration| source = File.binread(migration.filename) inserted_comment = "# This migration comes from #{scope} (originally #{migration.version})\n" - if /\A#.*\b(?:en)?coding:\s*\S+/ =~ source + magic_comments = "".dup + loop do # If we have a magic comment in the original migration, # insert our comment after the first newline(end of the magic comment line) # so the magic keep working. # Note that magic comments must be at the first line(except sh-bang). - source[/\n/] = "\n#{inserted_comment}" - else - source = "#{inserted_comment}#{source}" + source.sub!(/\A(?:#.*\b(?:en)?coding:\s*\S+|#\s*frozen_string_literal:\s*(?:true|false)).*\n/) do |magic_comment| + magic_comments << magic_comment; "" + end || break end + source = "#{magic_comments}#{inserted_comment}#{source}" if duplicate = destination_migrations.detect { |m| m.name == migration.name } if options[:on_skip] && duplicate.scope != scope.to_s |