Class: Bard::Backup::S3Dir
- Inherits:
-
Object
- Object
- Bard::Backup::S3Dir
- Defined in:
- lib/bard/backup/s3_dir.rb
Instance Method Summary collapse
- #bucket_name ⇒ Object
- #delete(keys) ⇒ Object
- #empty! ⇒ Object
- #folder_prefix ⇒ Object
- #keys ⇒ Object
- #put(file_path, body: File.read(file_path)) ⇒ Object
Instance Method Details
#bucket_name ⇒ Object
42 43 44 |
# File 'lib/bard/backup/s3_dir.rb', line 42 def bucket_name path.split("/").first end |
#delete(keys) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/bard/backup/s3_dir.rb', line 24 def delete keys return if keys.empty? objects_to_delete = Array(keys).map { |key| { key: key } } client.delete_objects({ bucket: bucket_name, delete: { objects: objects_to_delete, quiet: true, } }) end |
#empty! ⇒ Object
36 37 38 39 40 |
# File 'lib/bard/backup/s3_dir.rb', line 36 def empty! keys.each_slice(1000) do |key_batch| delete key_batch end end |
#folder_prefix ⇒ Object
46 47 48 49 |
# File 'lib/bard/backup/s3_dir.rb', line 46 def folder_prefix return nil if !path.include?("/") path.split("/")[1..].join("/") end |
#keys ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/bard/backup/s3_dir.rb', line 7 def keys response = client.list_objects_v2({ bucket: bucket_name, prefix: folder_prefix, }) raise if response.is_truncated response.contents.map(&:key) end |
#put(file_path, body: File.read(file_path)) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/bard/backup/s3_dir.rb', line 16 def put file_path, body: File.read(file_path) client.put_object({ bucket: bucket_name, key: [folder_prefix, File.basename(file_path)].compact.join("/"), body: body, }) end |