Sha256: e154973cfc82f4db179dd6d2902250e162f995aca2ff2b8d113491a2d38badef
Contents?: true
Size: 1.73 KB
Versions: 4
Compression:
Stored size: 1.73 KB
Contents
# encoding: utf-8 module Backup module Storage class Local < Base def initialize(model, storage_id = nil, &block) super instance_eval(&block) if block_given? @path ||= '~/backups' end private def transfer! FileUtils.mkdir_p(remote_path) transfer_method = package_movable? ? :mv : :cp package.filenames.each do |filename| src = File.join(Config.tmp_path, filename) dest = File.join(remote_path, filename) Logger.info "Storing '#{ dest }'..." FileUtils.send(transfer_method, src, dest) end end # Called by the Cycler. # Any error raised will be logged as a warning. def remove!(package) Logger.info "Removing backup package dated #{ package.time }..." FileUtils.rm_r(remote_path_for(package)) end # expanded since this is a local path def remote_path(pkg = package) File.expand_path(super) end alias :remote_path_for :remote_path ## # If this Local Storage is not the last Storage for the Model, # force the transfer to use a *copy* operation and issue a warning. def package_movable? if self == model.storages.last true else Logger.warn Errors::Storage::Local::TransferError.new(<<-EOS) Local File Copy Warning! The final backup file(s) for '#{ model.label }' (#{ model.trigger }) will be *copied* to '#{ remote_path }' To avoid this, when using more than one Storage, the 'Local' Storage should be added *last* so the files may be *moved* to their destination. EOS false end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
backup-3.6.0 | lib/backup/storage/local.rb |
backup-3.5.1 | lib/backup/storage/local.rb |
backup-3.5.0 | lib/backup/storage/local.rb |
backup-3.4.0 | lib/backup/storage/local.rb |