Module ActiveRecord::TestFixtures
In: vendor/rails/activerecord/lib/active_record/fixtures.rb

Methods

Classes and Modules

Module ActiveRecord::TestFixtures::ClassMethods

Public Class methods

[Source]

     # 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

Public Instance methods

[Source]

     # 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

[Source]

     # 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

[Source]

     # 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

[Validate]