class Backup::Storage::Aliyun

Attributes

access_key_id[RW]
access_key_secret[RW]
aliyun_internal[RW]
area[RW]
bucket[RW]
path[RW]

Public Class Methods

new(model, storage_id = nil, &block) click to toggle source
Calls superclass method
# File lib/backup/storage/aliyun.rb, line 11
def initialize(model, storage_id = nil, &block)
  super(model, storage_id)

  @path ||= 'backups'

  instance_eval(&block) if block_given?
end

Private Instance Methods

connection() click to toggle source
# File lib/backup/storage/aliyun.rb, line 21
def connection
  return @connection if @connection

  CarrierWave.configure do |config|
    config.storage = :aliyun
    config.aliyun_access_id = self.access_key_id
    config.aliyun_access_key = self.access_key_secret
    config.aliyun_bucket = self.bucket
    config.aliyun_area = self.area || "cn-hangzhou"
    config.aliyun_internal = self.aliyun_internal || false
  end

  @uploader = CarrierWave::Uploader::Base.new
  @connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
end
remove!(package) click to toggle source
# File lib/backup/storage/aliyun.rb, line 48
def remove!(package)
  remote_path = remote_path_for(package)
  @package.filenames.each do |filename|
    dest = File.join(remote_path, filename)
    Logger.info "#{storage_name} removing '#{ dest }'..."
    connection.delete(dest)
  end
  Logger.info "#{storage_name} removing '#{remote_path}'..."
  connection.delete(remote_path)
end
transfer!() click to toggle source
# File lib/backup/storage/aliyun.rb, line 37
def transfer!
  remote_path = remote_path_for(@package)

  @package.filenames.each do |filename|
    src = File.join(Config.tmp_path, filename)
    dest = File.join(remote_path, filename)
    Logger.info "#{storage_name} uploading '#{ dest }'..."
    connection.put(dest, File.open(src))
  end
end