class Shrine::Storage::Memory

Attributes

store[R]

Public Class Methods

new(store = {}) click to toggle source
# File lib/shrine/storage/memory.rb, line 11
def initialize(store = {})
  @store = store
end

Public Instance Methods

clear!() click to toggle source
# File lib/shrine/storage/memory.rb, line 44
def clear!
  store.clear
end
delete(id) click to toggle source
# File lib/shrine/storage/memory.rb, line 35
def delete(id)
  store.delete(id)
end
delete_prefixed(delete_prefix) click to toggle source
# File lib/shrine/storage/memory.rb, line 39
def delete_prefixed(delete_prefix)
  delete_prefix = delete_prefix.chomp("/") + "/"
  store.delete_if { |key, _value| key.start_with?(delete_prefix) }
end
exists?(id) click to toggle source
# File lib/shrine/storage/memory.rb, line 27
def exists?(id)
  store.key?(id)
end
open(id, **) click to toggle source
# File lib/shrine/storage/memory.rb, line 19
def open(id, **)
  io = StringIO.new(store.fetch(id))
  io.set_encoding(io.string.encoding) # Ruby 2.7.0 – https://bugs.ruby-lang.org/issues/16497
  io
rescue KeyError
  raise Shrine::FileNotFound, "file #{id.inspect} not found on storage"
end
upload(io, id, **) click to toggle source
# File lib/shrine/storage/memory.rb, line 15
def upload(io, id, **)
  store[id] = io.read
end
url(id, *) click to toggle source
# File lib/shrine/storage/memory.rb, line 31
def url(id, *)
  "memory://#{id}"
end