Class: Backup::DatabaseConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/backup/database_configuration.rb

Constant Summary collapse

SUPPORTED_OVERRIDES =

ENV variables that can override each database configuration These are used along with OVERRIDE_PREFIX and database name

See Also:

  • #process_config_overrides!
{
  username: 'PGUSER',
  host: 'PGHOST',
  port: 'PGPORT',
  password: 'PGPASSWORD',
  # SSL
  sslmode: 'PGSSLMODE',
  sslkey: 'PGSSLKEY',
  sslcert: 'PGSSLCERT',
  sslrootcert: 'PGSSLROOTCERT',
  sslcrl: 'PGSSLCRL',
  sslcompression: 'PGSSLCOMPRESSION'
}.freeze
OVERRIDE_PREFIXES =

Prefixes used for ENV variables overriding database configuration

%w[GITLAB_BACKUP_ GITLAB_OVERRIDE_].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connection_name) ⇒ DatabaseConfiguration

Initializes configuration

Parameters:

  • connection_name (String)

    the key from ‘database.yml` for multi-database connection configuration



18
19
20
21
22
23
24
# File 'lib/backup/database_configuration.rb', line 18

def initialize(connection_name)
  @connection_name = connection_name
  @source_model = Gitlab::Database.database_base_models_with_gitlab_shared[connection_name] ||
    Gitlab::Database.database_base_models_with_gitlab_shared['main']
  @activerecord_database_config = ActiveRecord::Base.configurations.find_db_config(connection_name) ||
    ActiveRecord::Base.configurations.find_db_config('main')
end

Instance Attribute Details

#connection_nameString (readonly)

Connection name is the key used in ‘config/database.yml` for multi-database connection configuration

Returns:

  • (String)


8
9
10
# File 'lib/backup/database_configuration.rb', line 8

def connection_name
  @connection_name
end

#source_modelActiveRecord::Base (readonly)

ActiveRecord base model that is configured to connect to the database identified by connection_name key

Returns:

  • (ActiveRecord::Base)


13
14
15
# File 'lib/backup/database_configuration.rb', line 13

def source_model
  @source_model
end

Instance Method Details

#activerecord_configurationActiveRecord::DatabaseConfigurations::HashConfig

Return the HashConfig for the database

Returns:

  • (ActiveRecord::DatabaseConfigurations::HashConfig)


49
50
51
52
53
54
55
# File 'lib/backup/database_configuration.rb', line 49

def activerecord_configuration
  ActiveRecord::DatabaseConfigurations::HashConfig.new(
    @activerecord_database_config.env_name,
    connection_name,
    activerecord_variables
  )
end

#activerecord_variablesObject

Return activerecord configuration values for current database with overrided values

@return activerecord database.yml configuration compatible values



69
70
71
72
73
# File 'lib/backup/database_configuration.rb', line 69

def activerecord_variables
  process_config_overrides! unless @activerecord_variables

  @activerecord_variables
end

#pg_env_variablesObject

Return postgres ENV variable values for current database with overrided values

@return hash of postgres ENV variables



60
61
62
63
64
# File 'lib/backup/database_configuration.rb', line 60

def pg_env_variables
  process_config_overrides! unless @pg_env_variables

  @pg_env_variables
end