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
- #empty! ⇒ Object
- #folder_prefix ⇒ Object
- #keys ⇒ Object
- #put(file_path, body: File.read(file_path)) ⇒ Object
Instance Method Details
#bucket_name ⇒ Object
37 38 39 |
# File 'lib/bard/backup/s3_dir.rb', line 37 def bucket_name path.split("/").first end |
#empty! ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/bard/backup/s3_dir.rb', line 24 def empty! keys.each_slice(1000) do |key_batch| objects_to_delete = key_batch.map { |key| { key: key } } client.delete_objects({ bucket: bucket_name, delete: { objects: objects_to_delete, quiet: true, } }) end end |
#folder_prefix ⇒ Object
41 42 43 |
# File 'lib/bard/backup/s3_dir.rb', line 41 def folder_prefix 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)}", body: body, }) end |