Class: McDuck::S3Mananger

Inherits:
Object
  • Object
show all
Defined in:
lib/mc_duck/s3_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(key_id, access_key, logger = Logger.new) ⇒ S3Mananger

Returns a new instance of S3Mananger.



6
7
8
9
# File 'lib/mc_duck/s3_manager.rb', line 6

def initialize(key_id, access_key, logger = Logger.new)
  connect!(key_id, access_key)
  @logger = logger
end

Instance Method Details

#backups_list(bucket_name, file_name) ⇒ Object



17
18
19
20
21
# File 'lib/mc_duck/s3_manager.rb', line 17

def backups_list(bucket_name, file_name)
  bucket = AWS::S3::Bucket.find(bucket_name)
  backups = bucket.map(&:key).sort
  backups.select { |file| file.include?(file_name) }
end

#cleanup(bucket_name, file_name, backups_to_keep = 10) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/mc_duck/s3_manager.rb', line 23

def cleanup(bucket_name, file_name, backups_to_keep = 10)
  expired_backups = backups_to_delete(bucket_name, file_name, backups_to_keep)
  expired_backups.each do |backup|
    @logger.info("Deleting old backup: #{backup}...")
    AWS::S3::S3Object.delete backup, bucket_name
  end
end

#upload(bucket, file_name, file_content) ⇒ Object



11
12
13
14
15
# File 'lib/mc_duck/s3_manager.rb', line 11

def upload(bucket, file_name, file_content)
  target_name = create_target_name(file_name)
  @logger.info("Uploading file: #{target_name}...")
  AWS::S3::S3Object.store(target_name, file_content, bucket)
end