Class: RemoteFiles::MemoryStore

Inherits:
AbstractStore show all
Defined in:
lib/remote_files/memory_store.rb

Instance Attribute Summary

Attributes inherited from AbstractStore

#identifier

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from AbstractStore

#[]=, #file_from_url, #initialize, #options, #read_only?, #to_sym

Constructor Details

This class inherits a constructor from RemoteFiles::AbstractStore

Class Method Details

.clear!Object



14
15
16
17
18
19
20
21
# File 'lib/remote_files/memory_store.rb', line 14

def self.clear!
  RemoteFiles::CONFIGURATIONS.values.each do |config|
    next unless config.configured?
    config.stores.each do |store|
      store.clear! if store.is_a?(RemoteFiles::MemoryStore)
    end
  end
end

Instance Method Details

#clear!Object



10
11
12
# File 'lib/remote_files/memory_store.rb', line 10

def clear!
  data.clear
end

#dataObject



6
7
8
# File 'lib/remote_files/memory_store.rb', line 6

def data
  @data ||= {}
end

#delete!(identifier) ⇒ Object

Raises:



42
43
44
45
# File 'lib/remote_files/memory_store.rb', line 42

def delete!(identifier)
  raise NotFoundError, "#{identifier} not found in #{self.identifier} store" unless data.has_key?(identifier)
  data.delete(identifier)
end

#directory_nameObject



38
39
40
# File 'lib/remote_files/memory_store.rb', line 38

def directory_name
  self.identifier.to_s
end

#retrieve!(identifier) ⇒ Object

Raises:



28
29
30
31
32
33
34
35
36
# File 'lib/remote_files/memory_store.rb', line 28

def retrieve!(identifier)
  raise NotFoundError, "#{identifier} not found in #{self.identifier} store" unless data.has_key?(identifier)

  File.new(identifier,
    :content      => data[identifier][:content],
    :content_type => data[identifier][:content_type],
    :stored_in    => [self]
  )
end

#store!(file) ⇒ Object



23
24
25
26
# File 'lib/remote_files/memory_store.rb', line 23

def store!(file)
  content = file.content.respond_to?(:read) ? file.content.read : file.content
  data[file.identifier] = { :content => content, :content_type => file.content_type}
end

#url(identifier) ⇒ Object



47
48
49
# File 'lib/remote_files/memory_store.rb', line 47

def url(identifier)
  "memory://#{self.identifier}/#{identifier}"
end

#url_matcherObject



51
52
53
# File 'lib/remote_files/memory_store.rb', line 51

def url_matcher
  @url_matcher ||= /memory:\/\/#{identifier}\/(.*)/
end