aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-07-02 01:23:28 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-07-02 02:05:07 +0900
commit0ba55d2e0c251451eede1da069666eb15e86b2c7 (patch)
tree0577d96f740182c04fcf8a7f6bb8f31da1077eaf /activerecord/lib
parent310918f6a194bf5752fe1025930881756f5d8a8e (diff)
downloadrails-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')
-rw-r--r--activerecord/lib/active_record/migration.rb10
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