Class: InfoparkComponentCache::Guards::LastChanged
- Inherits:
-
CmsStateGuard
- Object
- ConsistencyGuard
- CmsStateGuard
- InfoparkComponentCache::Guards::LastChanged
- Defined in:
- lib/infopark_component_cache/guards/last_changed.rb
Overview
This Guard class ensures that the objects in database do not change inbetween. (It caches the newest timestamp and compares it to the current value)
Direct Known Subclasses
Instance Attribute Summary
Attributes inherited from ConsistencyGuard
Instance Method Summary collapse
-
#cache_key ⇒ String
The cache key for storing #current_last_changed.
- #consistent? ⇒ Boolean
-
#current_last_changed ⇒ Time
The timestamp of the most recent change to any Obj.
- #guard! ⇒ Object
-
#last_changed_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
Returns the cache key for storing #current_last_changed.
29 30 31 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 29 def cache_key component.cache_key("last_changed") end |
#consistent? ⇒ Boolean
10 11 12 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 10 def consistent? last_changed_known? && no_changes_since? end |
#current_last_changed ⇒ Time
Returns the timestamp of the most recent change to any Obj.
34 35 36 37 38 39 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 34 def current_last_changed str_value = scoped_relation.maximum(:last_changed) return str_value if str_value.kind_of? Time RailsConnector::DateAttribute.parse(str_value) end |
#guard! ⇒ Object
14 15 16 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 14 def guard! cache.write(cache_key, current_last_changed) end |
#last_changed_known? ⇒ Boolean
Returns true if a timestamp can be read from cache with #cache_key.
19 20 21 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 19 def last_changed_known? cache.exist?(cache_key) && cache.read(cache_key).kind_of?(Time) end |
#no_changes_since? ⇒ Boolean
Returns true if no obj has been changed since last #guard!.
24 25 26 |
# File 'lib/infopark_component_cache/guards/last_changed.rb', line 24 def no_changes_since? current_last_changed <= cache.read(cache_key) end |