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.
131 132 133 |
# File 'lib/nandi/multi_database.rb', line 131 def initialize @databases = {} end |
Instance Method Details
#config(name = nil) ⇒ Object
135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/nandi/multi_database.rb', line 135 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
147 148 149 |
# File 'lib/nandi/multi_database.rb', line 147 def default @databases.values.find(&:default) end |
#names ⇒ Object
162 163 164 |
# File 'lib/nandi/multi_database.rb', line 162 def names @databases.keys end |
#register(name, config) ⇒ Object
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/nandi/multi_database.rb', line 151 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
166 167 168 169 170 171 |
# File 'lib/nandi/multi_database.rb', line 166 def validate! enforce_default_db_for_multi_database! enforce_names_for_multi_database! validate_unique_migration_directories! validate_unique_output_directories! end |