class Attachie::FakeDriver

Public Instance Methods

delete(name, bucket) click to toggle source
# File lib/attachie/fake_driver.rb, line 81
def delete(name, bucket)
  synchronize do
    objects(bucket).delete(name)
  end
end
download(name, bucket, path) click to toggle source
# File lib/attachie/fake_driver.rb, line 95
def download(name, bucket, path)
  content = value(name, bucket)

  open(path, "wb") { |stream| stream.write(content) }
end
exists?(name, bucket) click to toggle source
# File lib/attachie/fake_driver.rb, line 75
def exists?(name, bucket)
  synchronize do
    objects(bucket).key?(name)
  end
end
flush() click to toggle source
# File lib/attachie/fake_driver.rb, line 105
def flush
  synchronize do
    @objects = {}
  end
end
info(name, bucket) click to toggle source
# File lib/attachie/fake_driver.rb, line 49
def info(name, bucket)
  synchronize do
    {
      last_modified: nil,
      content_length: objects(bucket)[name].size,
      content_type: MIME::Types.of(name).first&.to_s
    }
  end
end
list(bucket, prefix: nil) { |key| ... } click to toggle source
# File lib/attachie/fake_driver.rb, line 39
def list(bucket, prefix: nil)
  return enum_for(:list, bucket, prefix: prefix) unless block_given?

  synchronize do
    objects(bucket).sort { |a, b| a[0] <=> b[0] }.each do |key, _|
      yield key if prefix.nil? || key.start_with?(prefix)
    end
  end
end
presigned_post(name, bucket, options = {}) click to toggle source
# File lib/attachie/fake_driver.rb, line 59
def presigned_post(name, bucket, options = {})
  raise NotSupported, 'presigned_post is not supported in FakeDriver'
end
store(name, data_or_io, bucket, options = {}) click to toggle source
# File lib/attachie/fake_driver.rb, line 63
def store(name, data_or_io, bucket, options = {})
  synchronize do
    objects(bucket)[name] = data_or_io.respond_to?(:read) ? data_or_io.read : data_or_io
  end
end
store_multipart(name, bucket, options = {}, &block) click to toggle source
# File lib/attachie/fake_driver.rb, line 69
def store_multipart(name, bucket, options = {}, &block)
  synchronize do
    objects(bucket)[name] = FakeMultipartUpload.new(name, bucket, options, &block).data
  end
end
temp_url(name, bucket, options = {}) click to toggle source
# File lib/attachie/fake_driver.rb, line 101
def temp_url(name, bucket, options = {})
  "https://example.com/#{bucket}/#{name}?signature=signature&expires=expires"
end
value(name, bucket) click to toggle source
# File lib/attachie/fake_driver.rb, line 87
def value(name, bucket)
  synchronize do
    raise(ItemNotFound) unless objects(bucket).key?(name)

    objects(bucket)[name]
  end
end

Private Instance Methods

objects(bucket) click to toggle source
# File lib/attachie/fake_driver.rb, line 113
def objects(bucket)
  synchronize do
    @objects ||= {}
    @objects[bucket] ||= {}
  end
end