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