Class: Nandi::MultiDatabase

Inherits:
Object
  • Object
show all
Defined in:
lib/nandi/multi_database.rb

Defined Under Namespace

Classes: Database

Instance Method Summary collapse

Constructor Details

#initializeMultiDatabase

Returns a new instance of MultiDatabase.



97
98
99
# File 'lib/nandi/multi_database.rb', line 97

def initialize
  @databases = {}
end

Instance Method Details

#config(name = nil) ⇒ Object

Raises:

  • (ArgumentError)


101
102
103
104
105
106
107
108
109
110
111
# File 'lib/nandi/multi_database.rb', line 101

def config(name = nil)
  # If name isnt specified, return config for the default database. This mimics behavior
  # of the rails migration commands.
  return default if name.nil?

  name = name.to_sym
  db_config = @databases[name]
  raise ArgumentError, "Missing database configuration for #{name}" if db_config.nil?

  db_config
end

#defaultObject



113
114
115
# File 'lib/nandi/multi_database.rb', line 113

def default
  @databases.values.find(&:default)
end

#namesObject



128
129
130
# File 'lib/nandi/multi_database.rb', line 128

def names
  @databases.keys
end

#register(name, config) ⇒ Object

Raises:

  • (ArgumentError)


117
118
119
120
121
122
123
124
125
126
# File 'lib/nandi/multi_database.rb', line 117

def register(name, config)
  name = name.to_sym

  # Allow re-registration with identical config (for Rails reloading)
  return @databases[name] if @databases.key?(name) && @databases[name].raw_config == config

  raise ArgumentError, "Database #{name} already registered" if @databases.key?(name)

  @databases[name] = Database.new(name: name, config: config)
end

#validate!Object



132
133
134
135
136
137
# File 'lib/nandi/multi_database.rb', line 132

def validate!
  enforce_default_db_for_multi_database!
  enforce_names_for_multi_database!
  validate_unique_migration_directories!
  validate_unique_output_directories!
end