Module | ActiveRecord::TestFixtures |
In: |
vendor/rails/activerecord/lib/active_record/fixtures.rb
|
# File vendor/rails/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
# File vendor/rails/activerecord/lib/active_record/fixtures.rb, line 908 908: def run_in_transaction? 909: use_transactional_fixtures && 910: !self.class.uses_transaction?(method_name) 911: end
# File vendor/rails/activerecord/lib/active_record/fixtures.rb, line 913 913: def setup_fixtures 914: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 915: 916: if pre_loaded_fixtures && !use_transactional_fixtures 917: raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures' 918: end 919: 920: @fixture_cache = {} 921: @@already_loaded_fixtures ||= {} 922: 923: # Load fixtures once and begin transaction. 924: if run_in_transaction? 925: if @@already_loaded_fixtures[self.class] 926: @loaded_fixtures = @@already_loaded_fixtures[self.class] 927: else 928: load_fixtures 929: @@already_loaded_fixtures[self.class] = @loaded_fixtures 930: end 931: ActiveRecord::Base.connection.increment_open_transactions 932: ActiveRecord::Base.connection.transaction_joinable = false 933: ActiveRecord::Base.connection.begin_db_transaction 934: # Load fixtures for every test. 935: else 936: Fixtures.reset_cache 937: @@already_loaded_fixtures[self.class] = nil 938: load_fixtures 939: end 940: 941: # Instantiate fixtures for every test if requested. 942: instantiate_fixtures if use_instantiated_fixtures 943: end
# File vendor/rails/activerecord/lib/active_record/fixtures.rb, line 945 945: def teardown_fixtures 946: return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank? 947: 948: unless run_in_transaction? 949: Fixtures.reset_cache 950: end 951: 952: # Rollback changes if a transaction is active. 953: if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0 954: ActiveRecord::Base.connection.rollback_db_transaction 955: ActiveRecord::Base.connection.decrement_open_transactions 956: end 957: ActiveRecord::Base.clear_active_connections! 958: end