Class: Shrine::Storage::Fog

Inherits:
Object
  • Object
show all
Defined in:
lib/shrine/storage/fog.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory:, prefix: nil, public: true, expires: 3600, connection: nil, **options) ⇒ Fog

Returns a new instance of Fog.



9
10
11
12
13
14
15
# File 'lib/shrine/storage/fog.rb', line 9

def initialize(directory:, prefix: nil, public: true, expires: 3600, connection: nil, **options)
  @connection = connection || ::Fog::Storage.new(options)
  @directory = @connection.directories.new(key: directory)
  @prefix = prefix
  @public = public
  @expires = expires
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



7
8
9
# File 'lib/shrine/storage/fog.rb', line 7

def connection
  @connection
end

#directoryObject (readonly)

Returns the value of attribute directory.



7
8
9
# File 'lib/shrine/storage/fog.rb', line 7

def directory
  @directory
end

#prefixObject (readonly)

Returns the value of attribute prefix.



7
8
9
# File 'lib/shrine/storage/fog.rb', line 7

def prefix
  @prefix
end

Instance Method Details

#clear!(confirm = nil) ⇒ Object

Raises:

  • (Shrine::Confirm)


56
57
58
59
# File 'lib/shrine/storage/fog.rb', line 56

def clear!(confirm = nil)
  raise Shrine::Confirm unless confirm == :confirm
  list.each(&:destroy)
end

#delete(id) ⇒ Object



41
42
43
# File 'lib/shrine/storage/fog.rb', line 41

def delete(id)
  file(id).destroy
end

#download(id) ⇒ Object



25
26
27
# File 'lib/shrine/storage/fog.rb', line 25

def download(id)
  Down.download(url(id))
end

#exists?(id) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/shrine/storage/fog.rb', line 37

def exists?(id)
  !!head(id)
end

#open(id) ⇒ Object



29
30
31
# File 'lib/shrine/storage/fog.rb', line 29

def open(id)
  download(id)
end

#read(id) ⇒ Object



33
34
35
# File 'lib/shrine/storage/fog.rb', line 33

def read(id)
  get(id).body
end

#upload(io, id, metadata = {}) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/shrine/storage/fog.rb', line 17

def upload(io, id,  = {})
  if copyable?(io)
    copy(io, id, )
  else
    put(io, id, )
  end
end

#url(id, **options) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/shrine/storage/fog.rb', line 45

def url(id, **options)
  signed_url = file(id).url(Time.now + @expires, **options)
  if @public
    uri = URI(signed_url)
    uri.query = nil
    uri.to_s
  else
    signed_url
  end
end