I ask because I would like to use Spring to preload my fixtures prior to forking. (It’s taking about 6 seconds to load ~300 fixture files)
However, after forking, ActiveRecord::Base returns a new connection (probably because one needs to establish a new connection after forking). This meant that FixtureSet.cache_for_connection returned nil even though there is a class level fixture cache.
The following monkey-patch gives me the cached fixtures again.
-
ActiveRecord::FixtureSet.class_eval do
-
# spring reconnects - this results in a new ActiveRecord::Base.connection object
-
def self.cache_for_connection(connection)
-
ActiveRecord::FixtureSet.class_variable_get(:@@all_cached_fixtures).values.only
-
end
-
end
I found this commit which I could not see an answer for my question :Added fixture caching thatll speed up a normal fixture-powered test s… · rails/rails@078bd05 · GitHub
Could it be for multiple databases or something like multi-threading ?