Module: ActiveRecord::TestFixtures
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_record/fixtures.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #after_teardown ⇒ Object
- #before_setup ⇒ Object
- #enlist_fixture_connections ⇒ Object
- #run_in_transaction? ⇒ Boolean
- #setup_fixtures(config = ActiveRecord::Base) ⇒ Object
- #teardown_fixtures ⇒ Object
Instance Method Details
#after_teardown ⇒ Object
810 811 812 813 |
# File 'lib/active_record/fixtures.rb', line 810 def after_teardown super teardown_fixtures end |
#before_setup ⇒ Object
805 806 807 808 |
# File 'lib/active_record/fixtures.rb', line 805 def before_setup setup_fixtures super end |
#enlist_fixture_connections ⇒ Object
978 979 980 |
# File 'lib/active_record/fixtures.rb', line 978 def enlist_fixture_connections ActiveRecord::Base.connection_handler.connection_pool_list.map(&:connection) end |
#run_in_transaction? ⇒ Boolean
927 928 929 930 |
# File 'lib/active_record/fixtures.rb', line 927 def run_in_transaction? use_transactional_fixtures && !self.class.uses_transaction?(method_name) end |
#setup_fixtures(config = ActiveRecord::Base) ⇒ Object
932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 |
# File 'lib/active_record/fixtures.rb', line 932 def setup_fixtures(config = ActiveRecord::Base) if pre_loaded_fixtures && !use_transactional_fixtures raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures' end @fixture_cache = {} @fixture_connections = [] @@already_loaded_fixtures ||= {} # Load fixtures once and begin transaction. if run_in_transaction? if @@already_loaded_fixtures[self.class] @loaded_fixtures = @@already_loaded_fixtures[self.class] else @loaded_fixtures = load_fixtures(config) @@already_loaded_fixtures[self.class] = @loaded_fixtures end @fixture_connections = enlist_fixture_connections @fixture_connections.each do |connection| connection.begin_transaction joinable: false end # Load fixtures for every test. else ActiveRecord::FixtureSet.reset_cache @@already_loaded_fixtures[self.class] = nil @loaded_fixtures = load_fixtures(config) end # Instantiate fixtures for every test if requested. instantiate_fixtures(config) if use_instantiated_fixtures end |
#teardown_fixtures ⇒ Object
964 965 966 967 968 969 970 971 972 973 974 975 976 |
# File 'lib/active_record/fixtures.rb', line 964 def teardown_fixtures # Rollback changes if a transaction is active. if run_in_transaction? @fixture_connections.each do |connection| connection.rollback_transaction if connection.transaction_open? end @fixture_connections.clear else ActiveRecord::FixtureSet.reset_cache end ActiveRecord::Base.clear_active_connections! end |