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
828 829 830 831 |
# File 'lib/active_record/fixtures.rb', line 828 def after_teardown super teardown_fixtures end |
#before_setup ⇒ Object
823 824 825 826 |
# File 'lib/active_record/fixtures.rb', line 823 def before_setup setup_fixtures super end |
#enlist_fixture_connections ⇒ Object
971 972 973 |
# File 'lib/active_record/fixtures.rb', line 971 def enlist_fixture_connections ActiveRecord::Base.connection_handler.connection_pool_list.map(&:connection) end |
#run_in_transaction? ⇒ Boolean
920 921 922 923 |
# File 'lib/active_record/fixtures.rb', line 920 def run_in_transaction? use_transactional_fixtures && !self.class.uses_transaction?(method_name) end |
#setup_fixtures(config = ActiveRecord::Base) ⇒ Object
925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 |
# File 'lib/active_record/fixtures.rb', line 925 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 if use_instantiated_fixtures end |
#teardown_fixtures ⇒ Object
957 958 959 960 961 962 963 964 965 966 967 968 969 |
# File 'lib/active_record/fixtures.rb', line 957 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 |