Namespace
Methods
I
R
S
T
Class Public methods
included(base)
# File activerecord/lib/active_record/fixtures.rb, line 811
def self.included(base)
  base.class_eval do
    setup :setup_fixtures
    teardown :teardown_fixtures
    superclass_delegating_accessor :fixture_path
    superclass_delegating_accessor :fixture_table_names
    superclass_delegating_accessor :fixture_class_names
    superclass_delegating_accessor :use_transactional_fixtures
    superclass_delegating_accessor :use_instantiated_fixtures   # true, false, or :no_instances
    superclass_delegating_accessor :pre_loaded_fixtures
    self.fixture_table_names = []
    self.use_transactional_fixtures = false
    self.use_instantiated_fixtures = true
    self.pre_loaded_fixtures = false
    self.fixture_class_names = {}
  end
  base.extend ClassMethods
end
Instance Public methods
run_in_transaction?()
# File activerecord/lib/active_record/fixtures.rb, line 909
def run_in_transaction?
  use_transactional_fixtures &&
    !self.class.uses_transaction?(method_name)
end
setup_fixtures()
# File activerecord/lib/active_record/fixtures.rb, line 914
def setup_fixtures
  return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank?
  if pre_loaded_fixtures && !use_transactional_fixtures
    raise RuntimeError, 'pre_loaded_fixtures requires use_transactional_fixtures'
  end
  @fixture_cache = {}
  @@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
      load_fixtures
      @@already_loaded_fixtures[self.class] = @loaded_fixtures
    end
    ActiveRecord::Base.connection.increment_open_transactions
    ActiveRecord::Base.connection.transaction_joinable = false
    ActiveRecord::Base.connection.begin_db_transaction
  # Load fixtures for every test.
  else
    Fixtures.reset_cache
    @@already_loaded_fixtures[self.class] = nil
    load_fixtures
  end
  # Instantiate fixtures for every test if requested.
  instantiate_fixtures if use_instantiated_fixtures
end
teardown_fixtures()
# File activerecord/lib/active_record/fixtures.rb, line 946
def teardown_fixtures
  return unless defined?(ActiveRecord) && !ActiveRecord::Base.configurations.blank?
  unless run_in_transaction?
    Fixtures.reset_cache
  end
  # Rollback changes if a transaction is active.
  if run_in_transaction? && ActiveRecord::Base.connection.open_transactions != 0
    ActiveRecord::Base.connection.rollback_db_transaction
    ActiveRecord::Base.connection.decrement_open_transactions
  end
  ActiveRecord::Base.clear_active_connections!
end