class SimpleBackup::Backends

Public Class Methods

new() click to toggle source
# File lib/simple_backup/backends.rb, line 11
def initialize
  @backends = {}
end

Public Instance Methods

each(&block) click to toggle source
# File lib/simple_backup/backends.rb, line 15
def each(&block)
  @backends.each(&block)
end
method_missing(method, *args) click to toggle source
# File lib/simple_backup/backends.rb, line 33
def method_missing(method, *args)
  backend = create_backend(method)

  return nil if backend.nil?

  name = args.shift
  options = args.shift
  options ||= {}

  raise "Name '#{name}' for backend already used" if @backends.has_key?(name.to_sym)

  backend.name = name
  backend.configure(options)

  @@logger.info "Created backend for: #{backend.desc}"
  @backends[name.to_sym] = backend
end
save_and_cleanup() click to toggle source
# File lib/simple_backup/backends.rb, line 19
def save_and_cleanup
  each do |name, backend|
    @@sources.each do |name, source|
      next unless source.backup_file and source.supports(backend)

      backend.store(source)
      @@logger.info "Source '#{source.desc.strip}' stored in backend '#{backend.desc.strip}'"

      backend.cleanup(source)
      @@logger.info "Source '#{source.desc.strip}' cleaned up in backend '#{backend.desc.strip}'"
    end
  end
end

Private Instance Methods

create_backend(name) click to toggle source
# File lib/simple_backup/backends.rb, line 52
def create_backend(name)
  file = "simple_backup/backend/#{name}"

  require file
  backend_name = Object.const_get("SimpleBackup::Backend::#{name.capitalize}")
  backend_name.new
end