Sha256: 4c898fd60425edc2e6294d7aa4a2f269fb6c214bc4725adeda5dfe1ec92e6b47

Contents?: true

Size: 943 Bytes

Versions: 1

Compression:

Stored size: 943 Bytes

Contents

module InfoparkComponentCache
  # @author Tomasz Przedmojski <tomasz.przedmojski@infopark.de>
  #
  # Cache entity (component) consists of an obj, a name
  # and some parameters (hash). It should be used to point
  # to some data stored in a particular context
  class Component
    attr_reader :obj, :component, :params

    def initialize(obj, component, params={})
      @obj, @component, @params = obj, component, params
    end

    def name
      self.component
    end

    def cache_key(meta_prefix=nil)
      if meta_prefix
        meta_prefix + "_" + KeyGenerator.generate_key(identity_hash)
      else
        KeyGenerator.generate_key(identity_hash)
      end
    end

    def identity_hash
      @params
        .except(:obj) #avoid the (ruby) object_id as part of the cache key (to_s), because it will change for each request
        .merge({:obj_name=>@obj.name, :obj_id=>@obj.id, :obj_component=>@component})
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
infopark_component_cache-3.2.0 lib/infopark_component_cache/component.rb