Class: SolidBackup::Configuration

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



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

def initialize
  self.enabled = nil
  self.algorithms = []
end

Instance Attribute Details

#algorithmsObject

Returns the value of attribute algorithms.



4
5
6
# File 'lib/solid_backup/configuration.rb', line 4

def algorithms
  @algorithms
end

#enabledObject

Returns the value of attribute enabled.



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

def enabled
  @enabled
end

Instance Method Details

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



11
12
13
14
15
16
17
18
# File 'lib/solid_backup/configuration.rb', line 11

def backup(name, algorithm_class, **algorithm_arguments)
  name = name.to_s
  if algorithms.find { it.name == name }
    raise ArgumentError.new("#{name} has had backups configured already")
  end

  algorithms << algorithm_class.new(name:, **algorithm_arguments)
end

#disabled?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/solid_backup/configuration.rb', line 42

def disabled?
  !enabled?
end

#enabled?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'lib/solid_backup/configuration.rb', line 38

def enabled?
  enabled
end

#validate!Object



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

def validate!
  if [true, false].exclude?(enabled)
    raise TypeError.new("enabled is set to #{enabled.inspect}, but allowed values are true or false")
  end

  configured_database_names = algorithms.map(&:name)
  all_database_names = ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).select do |db_config|
    db_config.adapter == "sqlite3"
  end.map(&:name)

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