class Outback::S3Target

Public Instance Methods

bucket() click to toggle source
# File lib/outback/s3_target.rb, line 18
def bucket
  service.buckets.find(bucket_name)
end
put(archives) click to toggle source
# File lib/outback/s3_target.rb, line 22
def put(archives)
  size = count = 0
  archives.each do |archive|
    object_name = [prefix.to_s, archive.filename.basename.to_s].join('/')
    logger.debug "S3Target: storing #{archive.filename} in s3://#{bucket_name}/#{object_name}"
    object = bucket.objects.build(object_name)
    object.content = archive.open
    object.acl = :private
    object.save
    if object.exists?
      size += archive.size
      count += 1
    else
      logger.error "S3 archive upload failed: #{object_name}"
    end
  end
  logger.info "Uploaded #{count} archives (#{size} bytes) to #{self}"
  count
end
service(force_reconnect = false) click to toggle source
# File lib/outback/s3_target.rb, line 13
def service(force_reconnect = false)
  @service = nil if force_reconnect
  @service ||= S3::Service.new(access_key_id: access_key, secret_access_key: secret_key, use_ssl: true)
end
to_s() click to toggle source
# File lib/outback/s3_target.rb, line 5
def to_s
  "s3:#{bucket_name}/#{prefix}"
end
valid?() click to toggle source
# File lib/outback/s3_target.rb, line 9
def valid?
  bucket_name && access_key && secret_key
end

Private Instance Methods

list_all_archives() click to toggle source
# File lib/outback/s3_target.rb, line 44
def list_all_archives
  entries = bucket.objects.select { |e| e.key.start_with?(prefix.to_s) && e.key[prefix.to_s.size..-1].match(Archive::NAME_PATTERN) }
  entries.map { |e| build_archive(e.key, e.size) }
end