class Outback::Backup

Attributes

configuration[R]
name[R]
timestamp[R]
tmpdir[R]

Public Class Methods

new(configuration) click to toggle source
# File lib/outback/backup.rb, line 7
def initialize(configuration)
  raise ArgumentError, "configuration required" unless configuration.is_a?(Outback::Configuration)
  @configuration = configuration
  @name = configuration.name
  @timestamp = Time.now.strftime(Outback::TIME_FORMAT)
end

Public Instance Methods

run!() click to toggle source
# File lib/outback/backup.rb, line 14
def run!
  logger.info "Using working directory #{configuration.tmpdir}" if configuration.tmpdir
  @tmpdir = Dir.mktmpdir([name, timestamp], configuration.tmpdir)
  archives = create_archives
  logger.info "Created #{archives.size} archives"
  archives = process_archives(archives)
  logger.info "Processed #{archives.size} archives"
  store_archives(archives)
  purge_targets
ensure
  FileUtils.remove_entry_secure(tmpdir)
end

Private Instance Methods

create_archives() click to toggle source
# File lib/outback/backup.rb, line 33
def create_archives
  sources.map { |source| source.create_archives(timestamp, tmpdir) }.flatten.compact
end
process_archives(archives) click to toggle source
# File lib/outback/backup.rb, line 37
def process_archives(archives)
  processors.inject(archives) { |archives, processor| processor.process!(archives) }.flatten.compact
end
purge_targets() click to toggle source
# File lib/outback/backup.rb, line 45
def purge_targets
  targets.each { |target| target.purge! }
end
store_archives(archives) click to toggle source
# File lib/outback/backup.rb, line 41
def store_archives(archives)
  targets.each { |target| target.put(archives) }
end