Methods
Classes and Modules
Instance Public methods
# File activerecord/lib/active_record/fixtures.rb, line 833 833: def setup_fixtures 834: return unless !ActiveRecord::Base.configurations.blank? 835: 836: if pre_loaded_fixtures && !use_transactional_fixtures 837: raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures' 838: end 839: 840: @fixture_cache = {} 841: @fixture_connections = [] 842: @@already_loaded_fixtures ||= {} 843: 844: # Load fixtures once and begin transaction. 845: if run_in_transaction? 846: if @@already_loaded_fixtures[self.class] 847: @loaded_fixtures = @@already_loaded_fixtures[self.class] 848: else 849: @loaded_fixtures = load_fixtures 850: @@already_loaded_fixtures[self.class] = @loaded_fixtures 851: end 852: @fixture_connections = enlist_fixture_connections 853: @fixture_connections.each do |connection| 854: connection.increment_open_transactions 855: connection.transaction_joinable = false 856: connection.begin_db_transaction 857: end 858: # Load fixtures for every test. 859: else 860: ActiveRecord::Fixtures.reset_cache 861: @@already_loaded_fixtures[self.class] = nil 862: @loaded_fixtures = load_fixtures 863: end 864: 865: # Instantiate fixtures for every test if requested. 866: instantiate_fixtures if use_instantiated_fixtures 867: end
# File activerecord/lib/active_record/fixtures.rb, line 869 869: def teardown_fixtures 870: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 871: 872: unless run_in_transaction? 873: ActiveRecord::Fixtures.reset_cache 874: end 875: 876: # Rollback changes if a transaction is active. 877: if run_in_transaction? 878: @fixture_connections.each do |connection| 879: if connection.open_transactions != 0 880: connection.rollback_db_transaction 881: connection.decrement_open_transactions 882: end 883: end 884: @fixture_connections.clear 885: end 886: ActiveRecord::Base.clear_active_connections! 887: end