module Card::Fetch::Store
lazy cache updates based on results
Public Instance Methods
cache_ready?()
click to toggle source
# File lib/card/fetch/store.rb, line 16 def cache_ready? @cache_ready end
eager_caching?()
click to toggle source
# File lib/card/fetch/store.rb, line 30 def eager_caching? opts[:eager_cache] && mark.name? && mark.absolute? && new_opts.present? end
needs_prep?()
click to toggle source
# File lib/card/fetch/store.rb, line 38 def needs_prep? return unless card.present? !(skip_modules? || card.patterns?) end
new_card_needed?()
click to toggle source
# File lib/card/fetch/store.rb, line 44 def new_card_needed? !(card.present? && (card.type_id.present? || skip_type_lookup?)) end
new_for_cache()
click to toggle source
instantiate a card as a cache placeholder
# File lib/card/fetch/store.rb, line 21 def new_for_cache return unless new_for_cache? args = { name: mark, skip_modules: true } args[:type_lookup] = :skip if skip_type_lookup? args.merge! new_opts.slice(:type, :type_id, :type_code) if eager_caching? @card = Card.new args end
new_for_cache?()
click to toggle source
# File lib/card/fetch/store.rb, line 34 def new_for_cache? reusable? && new_card_needed? end
prep_for_cache()
click to toggle source
Because Card
works by including set-specific ruby modules on singleton classes and singleton classes generally can’t be cached, we can never cache the cards in a completely ready-to-roll form.
However, we can optimize considerably by saving the list of ruby modules in environments where they won’t be changing (eg production) or at least the list of matching set patterns
# File lib/card/fetch/store.rb, line 59 def prep_for_cache # return # DELETE ME return if skip_modules? Cardio.config.cache_set_module_list ? card.set_modules : card.patterns end
reusable?()
click to toggle source
# File lib/card/fetch/store.rb, line 48 def reusable? !(mark.is_a?(Integer) || (mark.blank? && !opts[:new])) end
update_cache()
click to toggle source
# File lib/card/fetch/store.rb, line 5 def update_cache return unless update_cache? prep_for_cache Card.write_to_cache card, local_only? end
update_cache?()
click to toggle source
# File lib/card/fetch/store.rb, line 12 def update_cache? (cache_ready? || new_for_cache || needs_prep?) && !card&.uncacheable? end