Class: ROM::Cache Private

Inherits:
Object
  • Object
show all
Defined in:
lib/rom/cache.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Thread-safe cache used by various rom components

Defined Under Namespace

Classes: Namespaced

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCache

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a new instance of Cache.



42
43
44
45
# File 'lib/rom/cache.rb', line 42

def initialize
  @objects = ::Concurrent::Map.new
  @namespaced = {}
end

Instance Attribute Details

#objectsObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



10
11
12
# File 'lib/rom/cache.rb', line 10

def objects
  @objects
end

Instance Method Details

#[](key) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



47
# File 'lib/rom/cache.rb', line 47

def [](key) = objects[key]

#fetch_or_store(*args) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



50
# File 'lib/rom/cache.rb', line 50

def fetch_or_store(*args, &) = objects.fetch_or_store(args.hash, &)

#inspectObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



61
62
63
# File 'lib/rom/cache.rb', line 61

def inspect
  %(#<#{self.class} size=#{size} namespaced=#{@namespaced.inspect}>)
end

#namespaced(namespace) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



56
57
58
# File 'lib/rom/cache.rb', line 56

def namespaced(namespace)
  @namespaced[namespace] ||= Namespaced.new(objects, namespace)
end

#sizeObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



53
# File 'lib/rom/cache.rb', line 53

def size = objects.size