Index: . =================================================================== --- . (revision 19049) +++ . (working copy) @@ -835,6 +835,13 @@ self.fixture_class_names = {} class << self + + def fixture_connections + fixture_table_name.collect do |fixture| + (fixture_class_names[fixture] || fixture.classify).constantize.connection + end.uniq + end + def set_fixture_class(class_names = {}) self.fixture_class_names = self.fixture_class_names.merge(class_names) end @@ -930,8 +937,10 @@ load_fixtures @@already_loaded_fixtures[self.class] = @loaded_fixtures end - ActiveRecord::Base.connection.increment_open_transactions - ActiveRecord::Base.connection.begin_db_transaction + fixture_connections.each do |conn| + conn.increment_open_transactions + conn.begin_db_transaction + end # Load fixtures for every test. else Fixtures.reset_cache @@ -951,9 +960,12 @@ end # Rollback changes if a transaction is active. - if use_transactional_fixtures? && ActiveRecord::Base.connection.open_transactions != 0 - ActiveRecord::Base.connection.rollback_db_transaction - ActiveRecord::Base.connection.decrement_open_transactions + if use_transactional_fixtures? + fixture_connections.each do |conn| + ActiveRecord::Base.connection.open_transactions != 0 + ActiveRecord::Base.connection.rollback_db_transaction + ActiveRecord::Base.connection.decrement_open_transactions + end end ActiveRecord::Base.clear_active_connections! end