Module: CustomFragmentCache::Logic
- Extended by:
- ActiveSupport::Concern
- Included in:
- CustomFragmentCache
- Defined in:
- lib/custom_fragment_cache/logic.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.cache_key(fragment_name, record) ⇒ Object
36 37 38 |
# File 'lib/custom_fragment_cache/logic.rb', line 36 def cache_key(fragment_name, record) "#{prefix}:#{record.class.name.downcase}-#{record.id}:#{fragment_name}" end |
.prefix ⇒ Object
32 33 34 |
# File 'lib/custom_fragment_cache/logic.rb', line 32 def prefix "custom_fragment_cache" end |
Instance Method Details
#expire_cache?(fragment_cache, record) ⇒ Boolean
5 6 7 8 9 10 11 12 13 |
# File 'lib/custom_fragment_cache/logic.rb', line 5 def expire_cache?(fragment_cache, record) if fragment_cache.fields_method == :safe unsafe_dirty_fields = record.changed - fragment_cache.fields return true if unsafe_dirty_fields.present? elsif fragment_cache.fields_method == :trigger trigger_dirty_fields = record.changed & fragment_cache.fields return true if trigger_dirty_fields.present? end end |
#expire_fragment(key) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/custom_fragment_cache/logic.rb', line 15 def expire_fragment(key) action_controller = ActionController::Base.new if action_controller.send(:cache_configured?) action_controller.instrument_fragment_cache :expire_fragment, key do if key.is_a?(Regexp) action_controller.cache_store.delete_matched(key) elsif action_controller.cache_store.is_a?(ActiveSupport::Cache::RedisStore) # TODO find better solution action_controller.cache_store.delete_matched("*#{key}*") else action_controller.cache_store.delete(key) end end end end |