Methods
Classes and Modules
Module ActiveRecord::TestFixtures::ClassMethodsPublic Class methods
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 811 811: def self.included(base) 812: base.class_eval do 813: setup :setup_fixtures 814: teardown :teardown_fixtures 815: 816: superclass_delegating_accessor :fixture_path 817: superclass_delegating_accessor :fixture_table_names 818: superclass_delegating_accessor :fixture_class_names 819: superclass_delegating_accessor :use_transactional_fixtures 820: superclass_delegating_accessor :use_instantiated_fixtures # true, false, or :no_instances 821: superclass_delegating_accessor :pre_loaded_fixtures 822: 823: self.fixture_table_names = [] 824: self.use_transactional_fixtures = false 825: self.use_instantiated_fixtures = true 826: self.pre_loaded_fixtures = false 827: 828: self.fixture_class_names = {} 829: end 830: 831: base.extend ClassMethods 832: end
Public Instance methods
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 909 909: def run_in_transaction? 910: use_transactional_fixtures && 911: !self.class.uses_transaction?(method_name) 912: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 914 914: def setup_fixtures 915: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 916: 917: if pre_loaded_fixtures && !use_transactional_fixtures 918: raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures' 919: end 920: 921: @fixture_cache = {} 922: @@already_loaded_fixtures ||= {} 923: 924: # Load fixtures once and begin transaction. 925: if run_in_transaction? 926: if @@already_loaded_fixtures[self.class] 927: @loaded_fixtures = @@already_loaded_fixtures[self.class] 928: else 929: load_fixtures 930: @@already_loaded_fixtures[self.class] = @loaded_fixtures 931: end 932: ActiveRecord::Base.connection.increment_open_transactions 933: ActiveRecord::Base.connection.transaction_joinable = false 934: ActiveRecord::Base.connection.begin_db_transaction 935: # Load fixtures for every test. 936: else 937: Fixtures.reset_cache 938: @@already_loaded_fixtures[self.class] = nil 939: load_fixtures 940: end 941: 942: # Instantiate fixtures for every test if requested. 943: instantiate_fixtures if use_instantiated_fixtures 944: end
[ show source ]
# File activerecord/lib/active_record/fixtures.rb, line 946 946: def teardown_fixtures 947: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 948: 949: unless run_in_transaction? 950: Fixtures.reset_cache 951: end 952: 953: # Rollback changes if a transaction is active. 954: if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0 955: ActiveRecord::Base.connection.rollback_db_transaction 956: ActiveRecord::Base.connection.decrement_open_transactions 957: end 958: ActiveRecord::Base.clear_active_connections! 959: end