Using transactional fixtures now causes the data to be loaded only once, for BIG speed improvements

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1384 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Jamis Buck 2005-06-03 16:06:38 +00:00
parent 6d9ee4a306
commit ba254b5494
2 changed files with 10 additions and 2 deletions

View File

@ -1,5 +1,7 @@
*SVN*
* Using transactional fixtures now causes the data to be loaded only once.
* Added fixture accessor methods that can be used when instantiated fixtures are disabled.
fixtures :web_sites

View File

@ -410,6 +410,8 @@ module Test #:nodoc:
self.use_instantiated_fixtures = true
self.pre_loaded_fixtures = false
@@already_loaded_fixtures = {}
def self.fixtures(*table_names)
table_names = table_names.flatten
self.fixture_table_names |= table_names
@ -448,8 +450,12 @@ module Test #:nodoc:
# Load fixtures once and begin transaction.
if use_transactional_fixtures
load_fixtures unless @already_loaded_fixtures
@already_loaded_fixtures = true
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.lock_mutex
ActiveRecord::Base.connection.begin_db_transaction