Sha256: 8224cb96c661274fb959908e68ed2d22910a4cae01b52691073c4778c23d858e

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require_relative 'directory'
require_relative 'drivers/mysql'
require_relative 'drivers/postgresql'

module Ariranha
  class Base
    def initialize(config_file = 'config.yml')
      @config = YAML.load(File.open(config_file))
      config_instances
      config_directories
    end

    def backup
      instances.each do |instance|
        filename = instance.backup
        directories.each { |dir| dir.upload(filename, instance.database) }
        puts "deleting /tmp/#{filename}..."
        Open3.capture3 "rm -rf /tmp/#{filename}"
      end
    end

    private

    attr_reader :config, :instances, :directories

    def config_instances
      @instances = []
      config['databases'].each do |driver, instances|
        driver_str = "Ariranha::Drivers::#{driver.capitalize}"
        driver = driver_str.split('::').reduce(Object) { |a, e| a.const_get(e) }
        instances.each { |instance_cfg| @instances << driver.new(instance_cfg) }
      end
    end

    def config_directories
      @directories = []
      config['providers'].each do |provider, provider_cfg|
        @directories << Directory.new(provider, provider_cfg,
                                      config['keep_backups'])
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ariranha-0.0.3 lib/ariranha/base.rb