Class: Rack::Client::Cache::Storage

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/client/middleware/cache/storage.rb

Constant Summary collapse

@@singleton_instance =
new

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStorage

Returns a new instance of Storage.



5
6
7
8
# File 'lib/rack/client/middleware/cache/storage.rb', line 5

def initialize
  @metastores = {}
  @entitystores = {}
end

Class Method Details

.instanceObject



37
38
39
# File 'lib/rack/client/middleware/cache/storage.rb', line 37

def self.instance
  @@singleton_instance
end

Instance Method Details

#clearObject



30
31
32
33
34
# File 'lib/rack/client/middleware/cache/storage.rb', line 30

def clear
  @metastores.clear
  @entitystores.clear
  nil
end

#create_store(type, uri) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rack/client/middleware/cache/storage.rb', line 18

def create_store(type, uri)
  if uri.respond_to?(:scheme) || uri.respond_to?(:to_str)
    uri = URI.parse(uri) unless uri.respond_to?(:scheme)
    if type.const_defined?(uri.scheme.upcase)
      klass = type.const_get(uri.scheme.upcase)
      klass.resolve(uri)
    else
      fail "Unknown storage provider: #{uri.to_s}"
    end
  end
end

#resolve_entitystore_uri(uri) ⇒ Object



14
15
16
# File 'lib/rack/client/middleware/cache/storage.rb', line 14

def resolve_entitystore_uri(uri)
  @entitystores[uri.to_s] ||= create_store(EntityStore, uri)
end

#resolve_metastore_uri(uri) ⇒ Object



10
11
12
# File 'lib/rack/client/middleware/cache/storage.rb', line 10

def resolve_metastore_uri(uri)
  @metastores[uri.to_s] ||= create_store(MetaStore, uri)
end