lib/capistrano/ops/backup/s3.rb in capistrano-ops-0.2.3 vs lib/capistrano/ops/backup/s3.rb in capistrano-ops-0.2.4

- old
+ new

@@ -1,49 +1,52 @@ +# frozen_string_literal: true + module Backup - require 'aws-sdk-s3' - class S3 - attr_accessor :endpoint, :region, :access_key_id, :secret_access_key, :s3_client + require 'aws-sdk-s3' + class S3 + attr_accessor :endpoint, :region, :access_key_id, :secret_access_key, :s3_client - def initialize( endpoint: ENV['S3_BACKUP_ENDPOINT'], region: ENV['S3_BACKUP_REGION'], access_key_id: ENV['S3_BACKUP_KEY'], secret_access_key: ENV['S3_BACKUP_SECRET']) - self.endpoint = endpoint - self.region = region - self.access_key_id = access_key_id - self.secret_access_key = secret_access_key - config = { - region: region, - access_key_id: access_key_id, - secret_access_key: secret_access_key - } - config[:endpoint] = endpoint unless endpoint.nil? - self.s3_client = Aws::S3::Client.new(config) - end + def initialize(endpoint: ENV['S3_BACKUP_ENDPOINT'], region: ENV['S3_BACKUP_REGION'], access_key_id: ENV['S3_BACKUP_KEY'], + secret_access_key: ENV['S3_BACKUP_SECRET']) + self.endpoint = endpoint + self.region = region + self.access_key_id = access_key_id + self.secret_access_key = secret_access_key + config = { + region: region, + access_key_id: access_key_id, + secret_access_key: secret_access_key + } + config[:endpoint] = endpoint unless endpoint.nil? + self.s3_client = Aws::S3::Client.new(config) + end - def upload(backup_file, key) - begin - s3_client.put_object( - bucket: ENV['S3_BACKUP_BUCKET'], - key: key, - body: File.open(backup_file) - ) - rescue => e - puts "Error uploading backup to S3: #{e.message}" - raise e - end - "File uploaded to S3" - end + def upload(backup_file, key) + begin + s3_client.put_object( + bucket: ENV['S3_BACKUP_BUCKET'], + key: key, + body: File.open(backup_file) + ) + rescue StandardError => e + puts "Error uploading backup to S3: #{e.message}" + raise e + end + 'File uploaded to S3' + end - def remove_old_backups(basename, keep: 5) - bucket = ENV['S3_BACKUP_BUCKET'] - all_items = s3_client.list_objects_v2(bucket:bucket, prefix: basename).contents - count = all_items.count - if count <= keep - p 'Nothing to remove' - return - end - items = all_items.sort_by(&:last_modified).reverse.slice(keep..-1).map(&:key) - items.each do |item| - p "Removing #{item} from S3" - s3_client.delete_object(bucket: bucket, key: item) - end - end + def remove_old_backups(basename, keep: 5) + bucket = ENV['S3_BACKUP_BUCKET'] + all_items = s3_client.list_objects_v2(bucket: bucket, prefix: basename).contents + count = all_items.count + if count <= keep + p 'Nothing to remove' + return + end + items = all_items.sort_by(&:last_modified).reverse.slice(keep..-1).map(&:key) + items.each do |item| + p "Removing #{item} from S3" + s3_client.delete_object(bucket: bucket, key: item) + end end -end \ No newline at end of file + end +end