Methods
- instantiate_fixtures
- load_fixtures
- load_instances?
- run_in_transaction?
- setup_fixtures
- teardown_fixtures
Public Instance methods
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 920 920: def run_in_transaction? 921: use_transactional_fixtures && 922: !self.class.uses_transaction?(method_name) 923: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 925 925: def setup_fixtures 926: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 927: 928: if pre_loaded_fixtures && !use_transactional_fixtures 929: raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures' 930: end 931: 932: @fixture_cache = {} 933: @@already_loaded_fixtures ||= {} 934: 935: # Load fixtures once and begin transaction. 936: if run_in_transaction? 937: if @@already_loaded_fixtures[self.class] 938: @loaded_fixtures = @@already_loaded_fixtures[self.class] 939: else 940: load_fixtures 941: @@already_loaded_fixtures[self.class] = @loaded_fixtures 942: end 943: ActiveRecord::Base.connection.increment_open_transactions 944: ActiveRecord::Base.connection.transaction_joinable = false 945: ActiveRecord::Base.connection.begin_db_transaction 946: # Load fixtures for every test. 947: else 948: Fixtures.reset_cache 949: @@already_loaded_fixtures[self.class] = nil 950: load_fixtures 951: end 952: 953: # Instantiate fixtures for every test if requested. 954: instantiate_fixtures if use_instantiated_fixtures 955: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 957 957: def teardown_fixtures 958: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 959: 960: unless run_in_transaction? 961: Fixtures.reset_cache 962: end 963: 964: # Rollback changes if a transaction is active. 965: if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0 966: ActiveRecord::Base.connection.rollback_db_transaction 967: ActiveRecord::Base.connection.decrement_open_transactions 968: end 969: ActiveRecord::Base.clear_active_connections! 970: end
Private Instance methods
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 988 988: def instantiate_fixtures 989: if pre_loaded_fixtures 990: raise RuntimeError, 'Load fixtures before instantiating them.' if Fixtures.all_loaded_fixtures.empty? 991: unless @@required_fixture_classes 992: self.class.require_fixture_classes Fixtures.all_loaded_fixtures.keys 993: @@required_fixture_classes = true 994: end 995: Fixtures.instantiate_all_loaded_fixtures(self, load_instances?) 996: else 997: raise RuntimeError, 'Load fixtures before instantiating them.' if @loaded_fixtures.nil? 998: @loaded_fixtures.each do |table_name, fixtures| 999: Fixtures.instantiate_fixtures(self, table_name, fixtures, load_instances?) 1000: end 1001: end 1002: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 973 973: def load_fixtures 974: @loaded_fixtures = {} 975: fixtures = Fixtures.create_fixtures(fixture_path, fixture_table_names, fixture_class_names) 976: unless fixtures.nil? 977: if fixtures.instance_of?(Fixtures) 978: @loaded_fixtures[fixtures.name] = fixtures 979: else 980: fixtures.each { |f| @loaded_fixtures[f.name] = f } 981: end 982: end 983: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 1004 1004: def load_instances? 1005: use_instantiated_fixtures != :no_instances 1006: end