Methods
- cache
- clear_query_cache
- columns_with_query_cache
- dirties_query_cache
- included
- select_all_with_query_cache
- uncached
Attributes
[R] | query_cache | |
[R] | query_cache_enabled |
Public Class methods
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 14 14: def dirties_query_cache(base, *method_names) 15: method_names.each do |method_name| 16: base.class_eval "def \#{method_name}_with_query_dirty(*args) # def update_with_query_dirty(*args)\nclear_query_cache if @query_cache_enabled # clear_query_cache if @query_cache_enabled\n\#{method_name}_without_query_dirty(*args) # update_without_query_dirty(*args)\nend # end\n#\nalias_method_chain :\#{method_name}, :query_dirty # alias_method_chain :update, :query_dirty\n", __FILE__, __LINE__ + 1 17: end 18: end
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 5 5: def included(base) 6: base.class_eval do 7: alias_method_chain :columns, :query_cache 8: alias_method_chain :select_all, :query_cache 9: end 10: 11: dirties_query_cache base, :insert, :update, :delete 12: end
Public Instance methods
Enable the query cache within the block.
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 32 32: def cache 33: old, @query_cache_enabled = @query_cache_enabled, true 34: @query_cache ||= {} 35: yield 36: ensure 37: clear_query_cache 38: @query_cache_enabled = old 39: end
Clears the query cache.
One reason you may wish to call this method explicitly is between queries that ask the database to randomize results. Otherwise the cache would see the same SQL query and repeatedly return the same result each time, silently undermining the randomness you were expecting.
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 55 55: def clear_query_cache 56: @query_cache.clear if @query_cache 57: end
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 67 67: def columns_with_query_cache(*args) 68: if @query_cache_enabled 69: @query_cache["SHOW FIELDS FROM #{args.first}"] ||= columns_without_query_cache(*args) 70: else 71: columns_without_query_cache(*args) 72: end 73: end
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 59 59: def select_all_with_query_cache(*args) 60: if @query_cache_enabled 61: cache_sql(args.first) { select_all_without_query_cache(*args) } 62: else 63: select_all_without_query_cache(*args) 64: end 65: end
Disable the query cache within the block.
[ show source ]
# File activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb, line 42 42: def uncached 43: old, @query_cache_enabled = @query_cache_enabled, false 44: yield 45: ensure 46: @query_cache_enabled = old 47: end