Module: ActiveRecord::TestFixtures
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary
collapse
append_features, extended, included
Instance Method Details
#after_teardown ⇒ Object
710
711
712
713
|
# File 'activerecord/lib/active_record/fixtures.rb', line 710
def after_teardown
super
teardown_fixtures
end
|
#before_setup ⇒ Object
705
706
707
708
|
# File 'activerecord/lib/active_record/fixtures.rb', line 705
def before_setup
setup_fixtures
super
end
|
#enlist_fixture_connections ⇒ Object
883
884
885
|
# File 'activerecord/lib/active_record/fixtures.rb', line 883
def enlist_fixture_connections
ActiveRecord::Base.connection_handler.connection_pool_list.map(&:connection)
end
|
#run_in_transaction? ⇒ Boolean
832
833
834
835
|
# File 'activerecord/lib/active_record/fixtures.rb', line 832
def run_in_transaction?
use_transactional_fixtures &&
!self.class.uses_transaction?(method_name)
end
|
#setup_fixtures ⇒ Object
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
|
# File 'activerecord/lib/active_record/fixtures.rb', line 837
def setup_fixtures
if pre_loaded_fixtures && !use_transactional_fixtures
raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures'
end
@fixture_cache = {}
@fixture_connections = []
@@already_loaded_fixtures ||= {}
if run_in_transaction?
if @@already_loaded_fixtures[self.class]
@loaded_fixtures = @@already_loaded_fixtures[self.class]
else
@loaded_fixtures = load_fixtures
@@already_loaded_fixtures[self.class] = @loaded_fixtures
end
@fixture_connections = enlist_fixture_connections
@fixture_connections.each do |connection|
connection.begin_transaction joinable: false
end
else
ActiveRecord::FixtureSet.reset_cache
@@already_loaded_fixtures[self.class] = nil
@loaded_fixtures = load_fixtures
end
instantiate_fixtures if use_instantiated_fixtures
end
|
#teardown_fixtures ⇒ Object
869
870
871
872
873
874
875
876
877
878
879
880
881
|
# File 'activerecord/lib/active_record/fixtures.rb', line 869
def teardown_fixtures
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
|