diff options
Diffstat (limited to 'lib/gitlab/patch/database_config.rb')
-rw-r--r-- | lib/gitlab/patch/database_config.rb | 66 |
1 files changed, 2 insertions, 64 deletions
diff --git a/lib/gitlab/patch/database_config.rb b/lib/gitlab/patch/database_config.rb index c5c73d50518..20d8f7be8fd 100644 --- a/lib/gitlab/patch/database_config.rb +++ b/lib/gitlab/patch/database_config.rb @@ -1,77 +1,15 @@ # frozen_string_literal: true -# The purpose of this code is to transform legacy `database.yml` -# into a `database.yml` containing `main:` as a name of a first database -# -# This should be removed once all places using legacy `database.yml` -# are fixed. The likely moment to remove this check is the %14.0. -# -# This converts the following syntax: -# -# production: -# adapter: postgresql -# database: gitlabhq_production -# username: git -# password: "secure password" -# host: localhost -# -# Into: -# -# production: -# main: -# adapter: postgresql -# database: gitlabhq_production -# username: git -# password: "secure password" -# host: localhost -# - +# The purpose of this code is to set the migrations path +# for the Geo tracking database. module Gitlab module Patch module DatabaseConfig extend ActiveSupport::Concern - def load_database_yaml - return super unless Gitlab.ee? - - super.deep_merge(load_geo_database_yaml) - end - - # This method is taken from Rails to load a database YAML file without - # evaluating ERB. This allows us to create the rake tasks for the Geo - # tracking database without filling in the configuration values or - # loading the environment. To be removed when we start configure Geo - # tracking database in database.yml instead of custom database_geo.yml - # - # https://github.com/rails/rails/blob/v6.1.4/railties/lib/rails/application/configuration.rb#L255 - def load_geo_database_yaml - path = Rails.root.join("config/database_geo.yml") - return {} unless File.exist?(path) - - require "rails/application/dummy_erb_compiler" - - yaml = DummyERB.new(Pathname.new(path).read).result - config = YAML.load(yaml) || {} # rubocop:disable Security/YAMLLoad - - config.to_h do |env, configs| - # This check is taken from Rails where the transformation - # of a flat database.yml is done into `primary:` - # https://github.com/rails/rails/blob/v6.1.4/activerecord/lib/active_record/database_configurations.rb#L169 - if configs.is_a?(Hash) && !configs.all? { |_, v| v.is_a?(Hash) } - configs = { "geo" => configs } - end - - [env, configs] - end - end - def database_configuration super.to_h do |env, configs| if Gitlab.ee? - if !configs.key?("geo") && File.exist?(Rails.root.join("config/database_geo.yml")) - configs["geo"] = Rails.application.config_for(:database_geo).stringify_keys - end - if configs.key?("geo") migrations_paths = Array(configs["geo"]["migrations_paths"]) migrations_paths << "ee/db/geo/migrate" if migrations_paths.empty? |