Class: ActiveRecord::ConnectionAdapters::SchemaCache
- Defined in:
- activerecord/lib/active_record/connection_adapters/schema_cache.rb
Instance Attribute Summary collapse
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#columns_hash ⇒ Object
readonly
Returns the value of attribute columns_hash.
-
#connection ⇒ Object
readonly
Returns the value of attribute connection.
-
#primary_keys ⇒ Object
readonly
Returns the value of attribute primary_keys.
-
#tables ⇒ Object
readonly
Returns the value of attribute tables.
Instance Method Summary collapse
-
#clear! ⇒ Object
Clears out internal caches.
-
#clear_table_cache!(table_name) ⇒ Object
Clear out internal caches for table with
table_name
. -
#initialize(conn) ⇒ SchemaCache
constructor
A new instance of SchemaCache.
-
#table_exists?(name) ⇒ Boolean
A cached lookup for table existence.
Constructor Details
#initialize(conn) ⇒ SchemaCache
Returns a new instance of SchemaCache.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 7 def initialize(conn) @connection = conn @tables = {} @columns = Hash.new do |h, table_name| h[table_name] = conn.columns(table_name, "#{table_name} Columns") end @columns_hash = Hash.new do |h, table_name| h[table_name] = Hash[columns[table_name].map { |col| [col.name, col] }] end @primary_keys = Hash.new do |h, table_name| h[table_name] = table_exists?(table_name) ? conn.primary_key(table_name) : nil end end |
Instance Attribute Details
#columns ⇒ Object (readonly)
Returns the value of attribute columns
4 5 6 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 4 def columns @columns end |
#columns_hash ⇒ Object (readonly)
Returns the value of attribute columns_hash
4 5 6 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 4 def columns_hash @columns_hash end |
#connection ⇒ Object (readonly)
Returns the value of attribute connection
5 6 7 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 5 def connection @connection end |
#primary_keys ⇒ Object (readonly)
Returns the value of attribute primary_keys
4 5 6 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 4 def primary_keys @primary_keys end |
#tables ⇒ Object (readonly)
Returns the value of attribute tables
4 5 6 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 4 def tables @tables end |
Instance Method Details
#clear! ⇒ Object
Clears out internal caches
34 35 36 37 38 39 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 34 def clear! @columns.clear @columns_hash.clear @primary_keys.clear @tables.clear end |
#clear_table_cache!(table_name) ⇒ Object
Clear out internal caches for table with table_name
.
42 43 44 45 46 47 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 42 def clear_table_cache!(table_name) @columns.delete table_name @columns_hash.delete table_name @primary_keys.delete table_name @tables.delete table_name end |
#table_exists?(name) ⇒ Boolean
A cached lookup for table existence.
27 28 29 30 31 |
# File 'activerecord/lib/active_record/connection_adapters/schema_cache.rb', line 27 def table_exists?(name) return @tables[name] if @tables.key? name @tables[name] = connection.table_exists?(name) end |