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.
111 112 113 |
# File 'lib/nandi/multi_database.rb', line 111 def initialize @databases = {} end |
Instance Method Details
#config(name = nil) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/nandi/multi_database.rb', line 115 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
127 128 129 |
# File 'lib/nandi/multi_database.rb', line 127 def default @databases.values.find(&:default) end |
#names ⇒ Object
142 143 144 |
# File 'lib/nandi/multi_database.rb', line 142 def names @databases.keys end |
#register(name, config) ⇒ Object
131 132 133 134 135 136 137 138 139 140 |
# File 'lib/nandi/multi_database.rb', line 131 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
146 147 148 149 150 151 |
# File 'lib/nandi/multi_database.rb', line 146 def validate! enforce_default_db_for_multi_database! enforce_names_for_multi_database! validate_unique_migration_directories! validate_unique_output_directories! end |