Files

Class/Module Index [+]

Quicksearch

ActiveRecord::TestFixtures

Public Instance Methods

run_in_transaction?() click to toggle source
# File lib/active_record/fixtures.rb, line 918
def run_in_transaction?
  use_transactional_fixtures &&
    !self.class.uses_transaction?(method_name)
end
setup_fixtures() click to toggle source
# File lib/active_record/fixtures.rb, line 923
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() click to toggle source
# File lib/active_record/fixtures.rb, line 955
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.