module LogicalModel::Cache::ClassMethods
Attributes
expires_in[RW]
Public Instance Methods
async_find(id, params={})
click to toggle source
Calls superclass method
# File lib/logical_model/cache.rb, line 87 def async_find(id, params={}) super(id, params) end
Also aliased as: async_find_without_cache
async_find_response(id, params={}, body)
click to toggle source
Calls superclass method
# File lib/logical_model/cache.rb, line 107 def async_find_response(id, params={}, body) super(id, params, body) end
Also aliased as: async_find_response_without_cache
async_find_response_with_cache(id, params={}, body)
click to toggle source
# File lib/logical_model/cache.rb, line 111 def async_find_response_with_cache(id, params={}, body) # remove params not used in cache_key %w(app_key token).each {|k| params.delete(k) } cache_value = async_find_response_without_cache(id, params, body) # Generate key based on params cache_key = self.cache_key(id, params) self.logger.debug "LogicalModel Log CACHE: Writing cache key=#{cache_key}" self.cache_store.write(cache_key, cache_value, :expires_in => self.expires_in || 10.minutes) cache_value end
Also aliased as: async_find_response
async_find_with_cache(id, params = {}) { |cached_result| ... }
click to toggle source
# File lib/logical_model/cache.rb, line 91 def async_find_with_cache(id, params = {}, &block) # Generate key based on params cache_key = self.cache_key(id, params) # If there is a cached value return it self.logger.debug "LogicalModel Log CACHE: Reading cache key=#{cache_key}" cached_result = self.cache_store.read(cache_key) if cached_result yield cached_result else self.logger.debug 'LogicalModel Log CACHE: Cache not present. Calling find_async without cache' async_find_without_cache(id, params, &block) end end
Also aliased as: async_find
cache_key(id, params = {})
click to toggle source
Will return key for cache @param id [String] (nil) @param params [Hash]
# File lib/logical_model/cache.rb, line 80 def cache_key(id, params = {}) model_name = self.to_s.pluralize.underscore params_hash = Digest::MD5.hexdigest(params.to_s) cache_key = "#{model_name}/#{id}-#{params_hash}" end
cache_store()
click to toggle source
# File lib/logical_model/cache.rb, line 73 def cache_store @cache_store ||= Rails.cache end
delete(id, params={})
click to toggle source
Calls superclass method
# File lib/logical_model/cache.rb, line 124 def delete(id, params={}) super(id, params) end
Also aliased as: delete_without_cache
delete_multiple(ids, params={})
click to toggle source
Calls superclass method
# File lib/logical_model/cache.rb, line 138 def delete_multiple(ids, params={}) super(ids, params) end
Also aliased as: delete_multiple_without_cache
delete_multiple_with_cache(ids, params = {})
click to toggle source
# File lib/logical_model/cache.rb, line 142 def delete_multiple_with_cache(ids, params = {}) model_name = self.to_s.pluralize.underscore self.logger.debug "LogicalModel Log CACHE: Delete cache for #{model_name}\/(#{ids.join('|')})-.*" self.cache_store.delete_matched(/#{model_name}\/(#{ids.join('|')})-.*/) #TODO: also delete cache for parent (belongs_to) delete_multiple_without_cache(ids, params) end
Also aliased as: delete_multiple
delete_with_cache(id, params = {})
click to toggle source
# File lib/logical_model/cache.rb, line 128 def delete_with_cache(id, params = {}) model_name = self.to_s.pluralize.underscore self.logger.debug "LogicalModel Log CACHE: Delete cache for #{model_name}\/#{id}-.*" self.cache_store.delete_matched(/#{model_name}\/#{id}-.*/) #TODO: also delete cache for parent (belongs_to) delete_without_cache(id, params) end
Also aliased as: delete