class YumS3Sync::S3Uploader
Public Class Methods
new(bucket, prefix, downloader, dry_run = false)
click to toggle source
# File lib/yum_s3_sync/s3_uploader.rb, line 5 def initialize(bucket, prefix, downloader, dry_run = false) @bucket = bucket @prefix = prefix @downloader = downloader @dry_run = dry_run end
Public Instance Methods
upload(file, overwrite = false)
click to toggle source
# File lib/yum_s3_sync/s3_uploader.rb, line 12 def upload(file, overwrite = false) retries = 0 s3 = AWS::S3.new begin target = "#{@prefix}/#{file}" target.gsub!(/\/+/, '/') dest_obj = s3.buckets[@bucket].objects[target] if dest_obj.exists? && ! overwrite puts "Already exists: skipping #{@bucket}::#{target}" return end source_file = @downloader.download(file) if @dry_run puts "Dry-run: Uploading #{@bucket}::#{target}" else puts "Uploading #{@bucket}::#{target}" dest_obj.delete if dest_obj.exists? dest_obj.write(:file => source_file) end rescue StandardError => e if retries < 10 retries += 1 puts "Error uploading #{@bucket}::#{target} : #{e.message} retry ##{retries}" sleep(1) retry else puts "Error uploading #{@bucket}::#{target} : #{e.message} giving up" raise e end end end