Class: Nandi::MultiDatabase
- Inherits:
-
Object
- Object
- Nandi::MultiDatabase
- Defined in:
- lib/nandi/multi_database.rb
Defined Under Namespace
Classes: Database
Instance Method Summary collapse
- #config(name = nil) ⇒ Object
- #default ⇒ Object
-
#initialize ⇒ MultiDatabase
constructor
A new instance of MultiDatabase.
- #names ⇒ Object
- #register(name, config) ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize ⇒ MultiDatabase
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
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 |
#default ⇒ Object
113 114 115 |
# File 'lib/nandi/multi_database.rb', line 113 def default @databases.values.find(&:default) end |
#names ⇒ Object
128 129 130 |
# File 'lib/nandi/multi_database.rb', line 128 def names @databases.keys end |
#register(name, config) ⇒ Object
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 |