Class: MiniPaperclip::Storage::S3
- Inherits:
-
Base
- Object
- Base
- MiniPaperclip::Storage::S3
show all
- Defined in:
- lib/mini_paperclip/storage/s3.rb
Instance Attribute Summary
Attributes inherited from Base
#attachment, #config, #interpolator
Instance Method Summary
collapse
Methods inherited from Base
#initialize, #interpolate, #path_for, #url_for_read
Instance Method Details
#do_delete_files ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/mini_paperclip/storage/s3.rb', line 41
def do_delete_files
return if @deletes.empty?
debug("deleting by S3 to bucket:#{@config.s3_bucket_name},objects:#{@deletes}")
Aws::S3::Client.new.delete_objects(
bucket: @config.s3_bucket_name,
delete: {
objects: @deletes,
quiet: true,
}
)
end
|
#exists?(style) ⇒ Boolean
27
28
29
30
31
32
33
34
35
|
# File 'lib/mini_paperclip/storage/s3.rb', line 27
def exists?(style)
Aws::S3::Client.new.head_object(
bucket: @config.s3_bucket_name,
key: s3_object_key(style),
)
true
rescue Aws::S3::Errors::NotFound
false
end
|
#host ⇒ Object
22
23
24
25
|
# File 'lib/mini_paperclip/storage/s3.rb', line 22
def host
@config.s3_host_alias || "#{@config.s3_bucket_name}.#{@config.url_host}"
end
|
#open(style) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/mini_paperclip/storage/s3.rb', line 53
def open(style)
Tempfile.new(['MiniPaperclip::Storage::S3']).tap do |response_target|
response_target.binmode
Aws::S3::Client.new.get_object(
bucket: @config.s3_bucket_name,
key: s3_object_key(style),
response_target: response_target,
)
yield response_target if block_given?
end
end
|
#push_delete_file(style) ⇒ Object
37
38
39
|
# File 'lib/mini_paperclip/storage/s3.rb', line 37
def push_delete_file(style)
@deletes.push({ key: s3_object_key(style) })
end
|
#s3_object_key(style) ⇒ Object
18
19
20
|
# File 'lib/mini_paperclip/storage/s3.rb', line 18
def s3_object_key(style)
interpolate(@config.url_path, style)
end
|
#write(style, file) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
|
# File 'lib/mini_paperclip/storage/s3.rb', line 6
def write(style, file)
debug("writing by S3 to bucket:#{@config.s3_bucket_name},key:#{s3_object_key(style)}")
Aws::S3::Client.new.put_object(
acl: @config.s3_acl,
cache_control: @config.s3_cache_control,
content_type: @attachment.content_type,
body: file.tap(&:rewind),
bucket: @config.s3_bucket_name,
key: s3_object_key(style),
)
end
|