Module: LogicalModel::Cache::ClassMethods
- Defined in:
- lib/logical_model/cache.rb
Instance Attribute Summary collapse
-
#expires_in ⇒ Object
Returns the value of attribute expires_in.
Instance Method Summary collapse
- #async_find_response_with_cache(id, params = {}, body) ⇒ Object (also: #async_find_response)
- #async_find_with_cache(id, params = {}, &block) ⇒ Object (also: #async_find)
-
#cache_key(id, params = {}) ⇒ Object
Will return key for cache.
- #cache_store ⇒ Object
- #delete_multiple_with_cache(ids, params = {}) ⇒ Object (also: #delete_multiple)
- #delete_with_cache(id, params = {}) ⇒ Object (also: #delete)
Instance Attribute Details
#expires_in ⇒ Object
Returns the value of attribute expires_in.
71 72 73 |
# File 'lib/logical_model/cache.rb', line 71 def expires_in @expires_in end |
Instance Method Details
#async_find_response_with_cache(id, params = {}, body) ⇒ Object Also known as: async_find_response
111 112 113 114 115 116 117 118 119 120 |
# 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 |
#async_find_with_cache(id, params = {}, &block) ⇒ Object Also known as: async_find
91 92 93 94 95 96 97 98 99 100 101 102 103 |
# 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 |
#cache_key(id, params = {}) ⇒ Object
Will return key for cache
80 81 82 83 84 85 |
# 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 ⇒ Object
73 74 75 |
# File 'lib/logical_model/cache.rb', line 73 def cache_store @cache_store ||= Rails.cache end |
#delete_multiple_with_cache(ids, params = {}) ⇒ Object Also known as: delete_multiple
142 143 144 145 146 147 148 |
# 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 |
#delete_with_cache(id, params = {}) ⇒ Object Also known as: delete
128 129 130 131 132 133 134 |
# 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 |