aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/migration.rb
diff options
context:
space:
mode:
authorfatkodima <fatkodima123@gmail.com>2017-12-31 04:19:43 +0200
committerfatkodima <fatkodima123@gmail.com>2018-09-26 23:40:42 +0300
commitbdd8d5898710e727c55b514804a221b6eddbda41 (patch)
treef7de93fedea980f6957959aa6ad5271f12333edd /activerecord/lib/active_record/migration.rb
parent6556898884d636c59baae008e42783b8d3e16440 (diff)
downloadrails-bdd8d5898710e727c55b514804a221b6eddbda41.tar.gz
rails-bdd8d5898710e727c55b514804a221b6eddbda41.tar.bz2
rails-bdd8d5898710e727c55b514804a221b6eddbda41.zip
Fix `transaction` reverting for migrations
[fatkodima & David Verhasselt]
Diffstat (limited to 'activerecord/lib/active_record/migration.rb')
-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 9651e69edd..d712d4b3cf 100644
--- a/activerecord/lib/active_record/migration.rb
+++ b/activerecord/lib/active_record/migration.rb
@@ -678,15 +678,13 @@ module ActiveRecord
if connection.respond_to? :revert
connection.revert { yield }
else
- recorder = CommandRecorder.new(connection)
+ recorder = command_recorder
@connection = recorder
suppress_messages do
connection.revert { yield }
end
@connection = recorder.delegate
- recorder.commands.each do |cmd, args, block|
- send(cmd, *args, &block)
- end
+ recorder.replay(self)
end
end
end
@@ -962,6 +960,10 @@ module ActiveRecord
yield
end
end
+
+ def command_recorder
+ CommandRecorder.new(connection)
+ end
end
# MigrationProxy is used to defer loading of the actual migration classes