Class: InfoparkComponentCache::Guards::ValidUntil
- Inherits:
-
CmsStateGuard
- Object
- ConsistencyGuard
- CmsStateGuard
- InfoparkComponentCache::Guards::ValidUntil
- Defined in:
- lib/infopark_component_cache/guards/valid_until.rb
Overview
This guard ensures that any object, whose valid until date has been passed will cause inconsistency.
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from ConsistencyGuard
Instance Method Summary collapse
-
#cache_key ⇒ String
The cache key for storing #current_min_valid_until.
- #consistent? ⇒ Boolean
-
#current_min_valid_until ⇒ Time
The timestamp of the the object that will be deactivated in nearest future.
- #guard! ⇒ Object
-
#min_valid_until_known? ⇒ Boolean
True if a timestamp can be read from cache with #cache_key.
-
#no_changes_since? ⇒ Boolean
True if no obj has been changed since last #guard!.
Methods inherited from ConsistencyGuard
Constructor Details
This class inherits a constructor from InfoparkComponentCache::ConsistencyGuard
Instance Method Details
#cache_key ⇒ String
33 34 35 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 33 def cache_key component.cache_key("min_valid_until") end |
#consistent? ⇒ Boolean
10 11 12 13 14 15 16 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 10 def consistent? if min_valid_until_known? no_changes_since? else current_min_valid_until.nil? end end |
#current_min_valid_until ⇒ Time
38 39 40 41 42 43 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 38 def current_min_valid_until str_value = scoped_relation.where("valid_until > ?", Time.now.to_iso).minimum(:valid_until) return str_value if str_value.kind_of? Time RailsConnector::DateAttribute.parse(str_value) if str_value.present? end |
#guard! ⇒ Object
18 19 20 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 18 def guard! cache.write(cache_key, current_min_valid_until) end |
#min_valid_until_known? ⇒ Boolean
23 24 25 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 23 def min_valid_until_known? cache.exist?(cache_key) && cache.read(cache_key).kind_of?(Time) end |
#no_changes_since? ⇒ Boolean
28 29 30 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 28 def no_changes_since? current_min_valid_until == cache.read(cache_key) && current_min_valid_until > Time.now end |