Class: ROM::Cache Private

Inherits:
Object
  • Object
show all
Defined in:
core/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.



48
49
50
51
# File 'core/lib/rom/cache.rb', line 48

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 'core/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.



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

def [](key)
  cache[key]
end

#fetch_or_store(*args, &block) ⇒ 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.



58
59
60
# File 'core/lib/rom/cache.rb', line 58

def fetch_or_store(*args, &block)
  objects.fetch_or_store(args.hash, &block)
end

#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.



73
74
75
# File 'core/lib/rom/cache.rb', line 73

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.



68
69
70
# File 'core/lib/rom/cache.rb', line 68

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.



63
64
65
# File 'core/lib/rom/cache.rb', line 63

def size
  objects.size
end