Sha256: 08052f30829ff5287b707fd5827fecc59e91b59a452e652556bdd6df98743359

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

SnapshotArchive.configure do |config|
  config.register_store(
    "mysql",
    SnapshotArchive::Stores::Mysql,
    active_by_default: false
  )

  config.register_store("mysql_rails") do |store|
    store.backup do |dir, _args|
      existing_databases = (
        config
          .shell
          .run("mysql --execute 'show databases' --silent --skip-column-names")
      )

      db_names = (
        config
          .shell
          .run("sh -c 'cd $(git rev-parse --show-toplevel) && git grep database:.*_development *database.yml || exit 0'")
          .map { |line| line.match(/database:\s+(.*_development)\s*$/) }
          .compact
          .map { |match| match[1] }
          .select { |db| existing_databases.include?(db) }
          .reject { |db| db.match(/_tmp_/)}
      )

      next if db_names.empty?

      Cfg.bind_backup("mysql", db_names).backup(dir)
    end

    store.restore do |metadata|
      Cfg.store("mysql").restore(metadata)
    end
  end

  config.storage_path = File.join(ENV["HOME"], ".snapshot_archive")
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
snapshot_archive-0.2.0 lib/snapshot_archive/default_configuration.rb
snapshot_archive-0.1.0 lib/snapshot_archive/default_configuration.rb