Class: Backup::DatabaseConfiguration
- Inherits:
-
Object
- Object
- Backup::DatabaseConfiguration
- 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
{ 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
-
#connection_name ⇒ String
readonly
Connection name is the key used in ‘config/database.yml` for multi-database connection configuration.
-
#source_model ⇒ ActiveRecord::Base
readonly
ActiveRecord base model that is configured to connect to the database identified by connection_name key.
Instance Method Summary collapse
-
#activerecord_configuration ⇒ ActiveRecord::DatabaseConfigurations::HashConfig
Return the HashConfig for the database.
-
#activerecord_variables ⇒ Object
Return activerecord configuration values for current database with overrided values.
-
#initialize(connection_name) ⇒ DatabaseConfiguration
constructor
Initializes configuration.
-
#pg_env_variables ⇒ Object
Return postgres ENV variable values for current database with overrided values.
Constructor Details
#initialize(connection_name) ⇒ DatabaseConfiguration
Initializes 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_name ⇒ String (readonly)
Connection name is the key used in ‘config/database.yml` for multi-database connection configuration
8 9 10 |
# File 'lib/backup/database_configuration.rb', line 8 def connection_name @connection_name end |
#source_model ⇒ ActiveRecord::Base (readonly)
ActiveRecord base model that is configured to connect to the database identified by connection_name key
13 14 15 |
# File 'lib/backup/database_configuration.rb', line 13 def source_model @source_model end |
Instance Method Details
#activerecord_configuration ⇒ ActiveRecord::DatabaseConfigurations::HashConfig
Return the HashConfig for the database
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_variables ⇒ Object
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_variables ⇒ Object
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 |