Welcome to mirror list, hosted at ThFree Co, Russian Federation.

01_active_record_database_tasks_configuration_flag.rb « initializers « config - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 37374a41a30c1ddc1885069d0407c70d9205f7e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true

if Rails::VERSION::MAJOR >= 7
  raise "Remove `#{__FILE__}`. This is backport of `database_tasks:` Rails 7.x feature."
end

# This backports `database_tasks:` feature to skip running migrations for some databases
# PR: https://github.com/rails/rails/pull/42794/files

module DatabaseTasks
  module ActiveRecordDatabaseConfigurations
    def configs_for(env_name: nil, name: nil, include_replicas: false)
      configs = super

      unless include_replicas
        if name
          configs = nil unless configs&.database_tasks?
        else
          configs = configs.select do |db_config|
            db_config.database_tasks?
          end
        end
      end

      configs
    end
  end

  module ActiveRecordDatabaseConfigurationsHashConfig
    def database_tasks? # :nodoc:
      !replica? && !!configuration_hash.fetch(:database_tasks, true)
    end
  end
end

ActiveRecord::DatabaseConfigurations.prepend(DatabaseTasks::ActiveRecordDatabaseConfigurations)
ActiveRecord::DatabaseConfigurations::HashConfig.prepend(DatabaseTasks::ActiveRecordDatabaseConfigurationsHashConfig)