Class: ServerSettings::DatabaseConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/server_settings/database_config.rb

Class Method Summary collapse

Class Method Details

.generate_database_config(db_role, with_slave: true) ⇒ Object



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
38
39
40
# File 'lib/server_settings/database_config.rb', line 7

def self.generate_database_config(db_role, with_slave:true)
  configuration = {}
  return configuration unless ServerSettings.databases

  ServerSettings.databases.each do |db|
    next unless db.config(db_role)

    role_db_config = db.config(db_role)
    stringify_keys!(role_db_config) if defined? Rails

    if db.name == "default"
      if defined? Rails
        configuration[Rails.env] = role_db_config
      else
        configuration.merge!(role_db_config)
      end
    elsif db.group
      configuration[db.group] ||= {}
      configuration[db.group][db.name] = role_db_config
    else
      configuration[db.name] = role_db_config
    end

    if with_slave && db.has_slave?
      db.config(:slaves).each.with_index(1) do |config, idx|
        # スレーブのバックアップホストは、マスターのバックアップホストと同じにする
        config[:host] = db.backup if db_role == :backup
        stringify_keys!(config) if defined? Rails
        configuration[slave_name(db.name, idx)] = config
      end
    end
  end
  configuration
end

.slave_name(name, idx) ⇒ Object



3
4
5
# File 'lib/server_settings/database_config.rb', line 3

def self.slave_name(name, idx)
  name + "_slave#{idx}"
end

.stringify_keys!(config) ⇒ Object



42
43
44
# File 'lib/server_settings/database_config.rb', line 42

def self.stringify_keys!(config)
  config.keys.each { |key| config[key.to_s] = config.delete(key) }
end