Module: ActiveRecord::TestFixtures
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Defined in: | activerecord/lib/active_record/fixtures.rb |
Class Method Summary
::ActiveSupport::Concern - Extended
Instance Attribute Summary
- #run_in_transaction? ⇒ Boolean readonly
Instance Method Summary
DSL Calls
included
[ GitHub ]835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853
# File 'activerecord/lib/active_record/fixtures.rb', line 835
included do class_attribute :fixture_path, :instance_writer => false class_attribute :fixture_table_names class_attribute :fixture_class_names class_attribute :use_transactional_fixtures class_attribute :use_instantiated_fixtures # true, false, or :no_instances class_attribute :pre_loaded_fixtures class_attribute :config self.fixture_table_names = [] self.use_transactional_fixtures = true self.use_instantiated_fixtures = false self.pre_loaded_fixtures = false self.config = ActiveRecord::Base self.fixture_class_names = Hash.new do |h, fixture_set_name| h[fixture_set_name] = ActiveRecord::FixtureSet.default_fixture_model_name(fixture_set_name, self.config) end end
Instance Attribute Details
#run_in_transaction? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'activerecord/lib/active_record/fixtures.rb', line 922
def run_in_transaction? use_transactional_fixtures && !self.class.uses_transaction?(method_name) end
Instance Method Details
#after_teardown
[ GitHub ]# File 'activerecord/lib/active_record/fixtures.rb', line 830
def after_teardown super teardown_fixtures end
#before_setup
[ GitHub ]# File 'activerecord/lib/active_record/fixtures.rb', line 825
def before_setup setup_fixtures super end
#enlist_fixture_connections
[ GitHub ]# File 'activerecord/lib/active_record/fixtures.rb', line 973
def enlist_fixture_connections ActiveRecord::Base.connection_handler.connection_pool_list.map(&:connection) end
#setup_fixtures(config = ActiveRecord::Base)
[ GitHub ]# File 'activerecord/lib/active_record/fixtures.rb', line 927
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
[ GitHub ]# File 'activerecord/lib/active_record/fixtures.rb', line 959
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