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.



152
153
154
# File 'lib/nandi/multi_database.rb', line 152

def initialize
  @databases = {}
end

Instance Method Details

#config(name = nil) ⇒ Object

Raises:

  • (ArgumentError)


156
157
158
159
160
161
162
163
164
165
166
# File 'lib/nandi/multi_database.rb', line 156

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



168
169
170
# File 'lib/nandi/multi_database.rb', line 168

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

#namesObject



183
184
185
# File 'lib/nandi/multi_database.rb', line 183

def names
  @databases.keys
end

#register(name, config) ⇒ Object

Raises:

  • (ArgumentError)


172
173
174
175
176
177
178
179
180
181
# File 'lib/nandi/multi_database.rb', line 172

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



187
188
189
190
191
192
# File 'lib/nandi/multi_database.rb', line 187

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