class InfoparkComponentCache::Guards::ValidUntil
@author Tomasz Przedmojski <tomasz.przedmojski@infopark.de>
This guard ensures that any object, whose valid until date has been passed will cause inconsistency.
Public Instance Methods
cache_key()
click to toggle source
@return [String] the cache key for storing {#current_min_valid_until}
# File lib/infopark_component_cache/guards/valid_until.rb, line 33 def cache_key component.cache_key("min_valid_until") end
consistent?()
click to toggle source
# 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()
click to toggle source
@return [Time] the timestamp of the the object that will be deactivated in nearest future
# 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!()
click to toggle source
# 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?()
click to toggle source
@return true if a timestamp can be read from cache with {#cache_key}
# 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?()
click to toggle source
@return true if no obj has been changed since last {#guard!}
# 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