diff options
author | kennyj <kennyj@gmail.com> | 2012-03-01 01:13:14 +0900 |
---|---|---|
committer | kennyj <kennyj@gmail.com> | 2012-03-01 01:13:14 +0900 |
commit | 0da12df2608969330bd47c543866f79ff8ca9edd (patch) | |
tree | 7299cbc132879c3af3490d461b1d6c405abed474 /activerecord | |
parent | 0150a212c068c6e4a580218913f44f278e086bd3 (diff) | |
download | rails-0da12df2608969330bd47c543866f79ff8ca9edd.tar.gz rails-0da12df2608969330bd47c543866f79ff8ca9edd.tar.bz2 rails-0da12df2608969330bd47c543866f79ff8ca9edd.zip |
Load db/schema_cache.dump duaring boot time.
Diffstat (limited to 'activerecord')
3 files changed, 18 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index c6af682d28..3cc714040d 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -86,6 +86,11 @@ module ActiveRecord end end + def schema_cache=(cache) + cache.connection = self + @schema_cache = cache + end + def expire @in_use = false end diff --git a/activerecord/lib/active_record/connection_adapters/schema_cache.rb b/activerecord/lib/active_record/connection_adapters/schema_cache.rb index cd8c5844a4..53fa404305 100644 --- a/activerecord/lib/active_record/connection_adapters/schema_cache.rb +++ b/activerecord/lib/active_record/connection_adapters/schema_cache.rb @@ -2,7 +2,7 @@ module ActiveRecord module ConnectionAdapters class SchemaCache attr_reader :columns, :columns_hash, :primary_keys, :tables - attr_reader :connection + attr_accessor :connection def initialize(conn) @connection = conn diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index 058dd58efb..c287356a7b 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -107,7 +107,7 @@ module ActiveRecord config.watchable_files.concat ["#{app.root}/db/schema.rb", "#{app.root}/db/structure.sql"] end - config.after_initialize do + config.after_initialize do |app| ActiveSupport.on_load(:active_record) do ActiveRecord::Base.instantiate_observers @@ -115,6 +115,17 @@ module ActiveRecord ActiveRecord::Base.instantiate_observers end end + + ActiveSupport.on_load(:active_record) do + if app.config.use_schema_cache_dump + filename = File.join(app.config.paths["db"].first, "schema_cache.dump") + if File.file?(filename) + cache = Marshal.load(open(filename, 'rb') { |f| f.read }) + ActiveRecord::Base.connection.schema_cache = cache + end + end + end + end end end |