Module: ActiveRecord::ConnectionAdapters::QueryCache
- Defined in:
- lib/active_record/connection_adapters/abstract/query_cache.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#cache ⇒ Object
Enable the query cache within the block.
- #clear_query_cache ⇒ Object
- #columns_with_query_cache(*args) ⇒ Object
- #select_all_with_query_cache(*args) ⇒ Object
-
#uncached ⇒ Object
Disable the query cache within the block.
Class Method Details
.dirties_query_cache(base, *method_names) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 15 def dirties_query_cache(base, *method_names) method_names.each do |method_name| base.class_eval <<-end_code, __FILE__, __LINE__ def #{method_name}_with_query_dirty(*args) clear_query_cache if @query_cache_enabled #{method_name}_without_query_dirty(*args) end alias_method_chain :#{method_name}, :query_dirty end_code end end |
.included(base) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 5 def included(base) base.class_eval do attr_accessor :query_cache_enabled alias_method_chain :columns, :query_cache alias_method_chain :select_all, :query_cache end dirties_query_cache base, :insert, :update, :delete end |
Instance Method Details
#cache ⇒ Object
Enable the query cache within the block.
30 31 32 33 34 35 36 37 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 30 def cache old, @query_cache_enabled = @query_cache_enabled, true @query_cache ||= {} yield ensure clear_query_cache @query_cache_enabled = old end |
#clear_query_cache ⇒ Object
47 48 49 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 47 def clear_query_cache @query_cache.clear if @query_cache end |
#columns_with_query_cache(*args) ⇒ Object
59 60 61 62 63 64 65 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 59 def columns_with_query_cache(*args) if @query_cache_enabled @query_cache["SHOW FIELDS FROM #{args.first}"] ||= columns_without_query_cache(*args) else columns_without_query_cache(*args) end end |
#select_all_with_query_cache(*args) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 51 def select_all_with_query_cache(*args) if @query_cache_enabled cache_sql(args.first) { select_all_without_query_cache(*args) } else select_all_without_query_cache(*args) end end |
#uncached ⇒ Object
Disable the query cache within the block.
40 41 42 43 44 45 |
# File 'lib/active_record/connection_adapters/abstract/query_cache.rb', line 40 def uncached old, @query_cache_enabled = @query_cache_enabled, false yield ensure @query_cache_enabled = old end |