Class: SolidBackup::Configuration::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_backup/configuration/environment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) {|_self| ... } ⇒ Environment

Returns a new instance of Environment.

Yields:

  • (_self)

Yield Parameters:



4
5
6
7
8
9
# File 'lib/solid_backup/configuration/environment.rb', line 4

def initialize(name)
  self.name = name
  self.backups = []

  yield(self)
end

Instance Attribute Details

#backupsObject

Returns the value of attribute backups.



2
3
4
# File 'lib/solid_backup/configuration/environment.rb', line 2

def backups
  @backups
end

#nameObject

Returns the value of attribute name.



2
3
4
# File 'lib/solid_backup/configuration/environment.rb', line 2

def name
  @name
end

Instance Method Details

#backup(database, algorithm_class, **algorithm_arguments) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/solid_backup/configuration/environment.rb', line 15

def backup(database, algorithm_class, **algorithm_arguments)
  database = database.to_s
  if backups.any? { it.database == database }
    raise ArgumentError.new("backups for #{database} in #{name} have already been configured")
  end

  backups << algorithm_class.new(database:, **algorithm_arguments)
end

#tickObject



11
12
13
# File 'lib/solid_backup/configuration/environment.rb', line 11

def tick
  backups.each(&:tick)
end

#validate!Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/solid_backup/configuration/environment.rb', line 24

def validate!
  configured_databases = backups.map(&:database)
  all_databases = ActiveRecord::Base.configurations.configs_for(env_name: name).select do |db_config|
    db_config.adapter == "sqlite3"
  end.map(&:name)

  if (missing_databases = all_databases - configured_databases).present?
    raise "SQLite databases missing from backup configuration for #{name}: #{missing_databases.join(", ")}"
  end
  if (unknown_databases = configured_databases - all_databases).present?
    raise "unknown SQLite databases present in backup configuration for #{name}: #{unknown_databases.join(", ")}"
  end
end