Sha256: a5641ddc284739c89aedc452ee461d50893af47b3c3d7d2ddf0702df6e4f616e

Contents?: true

Size: 1.68 KB

Versions: 7

Compression:

Stored size: 1.68 KB

Contents

# encoding: utf-8

module Backup
  module Storage
    class Local < Base
      class Error < Backup::Error; end

      def initialize(model, storage_id = nil)
        super

        @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 Error.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

7 entries across 7 versions & 1 rubygems

Version Path
backup-3.11.0 lib/backup/storage/local.rb
backup-3.10.0 lib/backup/storage/local.rb
backup-3.9.0 lib/backup/storage/local.rb
backup-3.8.0 lib/backup/storage/local.rb
backup-3.7.2 lib/backup/storage/local.rb
backup-3.7.1 lib/backup/storage/local.rb
backup-3.7.0 lib/backup/storage/local.rb