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:
parent
6d9ee4a306
commit
ba254b5494
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue