diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2011-10-05 19:31:47 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2011-10-05 19:31:47 -0700 |
commit | 0adab7c29baf520f7bef3a4c7f8a0d2deb6916fb (patch) | |
tree | 0bfc768754ede78f8cf3897ae722e023b28e7ed9 /activerecord/lib/active_record/fixtures.rb | |
parent | 82d41c969897cca28bb318f7caf301d520a2fbf3 (diff) | |
parent | 999b7ed94d7d7f993cded7376fc4014128d43294 (diff) | |
download | rails-0adab7c29baf520f7bef3a4c7f8a0d2deb6916fb.tar.gz rails-0adab7c29baf520f7bef3a4c7f8a0d2deb6916fb.tar.bz2 rails-0adab7c29baf520f7bef3a4c7f8a0d2deb6916fb.zip |
Merge branch 'multiple-transactional-fixture-connections'
Diffstat (limited to 'activerecord/lib/active_record/fixtures.rb')
-rw-r--r-- | activerecord/lib/active_record/fixtures.rb | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb index 6f1ec7f9b3..cad9417216 100644 --- a/activerecord/lib/active_record/fixtures.rb +++ b/activerecord/lib/active_record/fixtures.rb @@ -842,9 +842,12 @@ module ActiveRecord @loaded_fixtures = load_fixtures @@already_loaded_fixtures[self.class] = @loaded_fixtures end - ActiveRecord::Base.connection.increment_open_transactions - ActiveRecord::Base.connection.transaction_joinable = false - ActiveRecord::Base.connection.begin_db_transaction + @fixture_connections = enlist_fixture_connections + @fixture_connections.each do |connection| + connection.increment_open_transactions + connection.transaction_joinable = false + connection.begin_db_transaction + end # Load fixtures for every test. else ActiveRecord::Fixtures.reset_cache @@ -864,13 +867,22 @@ module ActiveRecord end # Rollback changes if a transaction is active. - if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0 - ActiveRecord::Base.connection.rollback_db_transaction - ActiveRecord::Base.connection.decrement_open_transactions + if run_in_transaction? + @fixture_connections.each do |connection| + if connection.open_transactions != 0 + connection.rollback_db_transaction + connection.decrement_open_transactions + end + end + @fixture_connections.clear end ActiveRecord::Base.clear_active_connections! end + def enlist_fixture_connections + ActiveRecord::Base.connection_handler.connection_pools.values.map(&:connection) + end + private def load_fixtures fixtures = ActiveRecord::Fixtures.create_fixtures(fixture_path, fixture_table_names, fixture_class_names) |