Class: InfoparkComponentCache::Guards::ValidUntil
- Inherits:
-
ConsistencyGuard
- Object
- ConsistencyGuard
- 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.
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
Returns the cache key for storing #current_min_valid_until.
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? return no_changes_since? else return current_min_valid_until.nil? end end |
#current_min_valid_until ⇒ Time
Returns the timestamp of the the object that will be deactivated in nearest future.
38 39 40 41 42 43 44 45 |
# File 'lib/infopark_component_cache/guards/valid_until.rb', line 38 def current_min_valid_until str_value = RailsConnector::Obj.where('valid_until > ?', Time.now.to_iso).minimum(:valid_until) if str_value.present? RailsConnector::DateAttribute.parse(str_value) else nil end 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
Returns true if a timestamp can be read from cache with #cache_key.
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
Returns true if no obj has been changed since last #guard!.
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 |