Class: ActiveRecord::ConnectionAdapters::SchemaCache
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::SchemaCache
- Defined in:
- lib/active_record/connection_adapters/schema_cache.rb
Instance Attribute Summary collapse
-
#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
. -
#columns(table = nil) ⇒ Object
Get the columns for a table.
-
#columns_hash(table = nil) ⇒ Object
Get the columns for a table as a hash, key is the column name value is the column object.
-
#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 '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] = connection.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) ? connection.primary_key(table_name) : nil end end |
Instance Attribute Details
#connection ⇒ Object (readonly)
Returns the value of attribute connection.
5 6 7 |
# File '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 '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 'lib/active_record/connection_adapters/schema_cache.rb', line 4 def tables @tables end |
Instance Method Details
#clear! ⇒ Object
Clears out internal caches
53 54 55 56 57 58 |
# File 'lib/active_record/connection_adapters/schema_cache.rb', line 53 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
.
61 62 63 64 65 66 |
# File 'lib/active_record/connection_adapters/schema_cache.rb', line 61 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 |
#columns(table = nil) ⇒ Object
Get the columns for a table
34 35 36 37 38 39 40 |
# File 'lib/active_record/connection_adapters/schema_cache.rb', line 34 def columns(table = nil) if table @columns[table] else @columns end end |
#columns_hash(table = nil) ⇒ Object
Get the columns for a table as a hash, key is the column name value is the column object.
44 45 46 47 48 49 50 |
# File 'lib/active_record/connection_adapters/schema_cache.rb', line 44 def columns_hash(table = nil) if table @columns_hash[table] else @columns_hash end end |
#table_exists?(name) ⇒ Boolean
A cached lookup for table existence.
27 28 29 30 31 |
# File '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 |