class Shrine::Storage::Redis

Attributes

expire[R]
prefix[R]
redis[R]

Public Class Methods

new(client: nil, prefix: nil, expire: nil, **options) click to toggle source
# File lib/shrine/storage/redis.rb, line 11
def initialize(client: nil, prefix: nil, expire: nil, **options)
  @redis = client || ::Redis.new(options)
  @prefix = prefix
  @expire = expire
  raise ArgumentError, 'Missing redis client' unless @redis.is_a?(::Redis)
end

Public Instance Methods

delete(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 38
def delete(id)
  redis.del(key(id))
end
exists?(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 34
def exists?(id)
  redis.exists(key(id))
end
multi_delete(ids) click to toggle source
# File lib/shrine/storage/redis.rb, line 42
def multi_delete(ids)
  if ids.is_a?(Array)
    ids.each { |id| delete(id) }
  elsif ids.is_a?(String)
    redis.del(keys(ids)) unless keys(ids).empty?
  end
end
open(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 29
def open(id)
  redis.expire(key(id), expire) if expire
  StringIO.new(content(id))
end
upload(io, id, shrine_metadata: {}, **upload_options) click to toggle source
# File lib/shrine/storage/redis.rb, line 18
def upload(io, id, shrine_metadata: {}, **upload_options)
  if expire
    redis.setex(key(id), expire, io.read)
  else
    redis.set(key(id), io.read)
  end
end
url(id, **options) click to toggle source
# File lib/shrine/storage/redis.rb, line 26
def url(id, **options)
end

Private Instance Methods

content(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 52
def content(id)
  redis.get(key(id)).to_s
end
key(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 60
def key(id)
  [*prefix, id].join(":")
end
keys(id) click to toggle source
# File lib/shrine/storage/redis.rb, line 56
def keys(id)
  redis.keys(key(id))
end