31 lines
762 B
Ruby
31 lines
762 B
Ruby
require_relative 'database_configuration_registry'
|
|
require 'delegate'
|
|
|
|
module Tests
|
|
class DatabaseConfiguration < SimpleDelegator
|
|
ENVIRONMENTS = %w(development test production)
|
|
|
|
attr_reader :adapter_class
|
|
|
|
def self.for(database_name, adapter_name)
|
|
config_class = DatabaseConfigurationRegistry.instance.get(adapter_name)
|
|
config = config_class.new(database_name)
|
|
new(config)
|
|
end
|
|
|
|
def initialize(config)
|
|
@adapter_class = config.class.to_s.split('::').last
|
|
super(config)
|
|
end
|
|
|
|
def to_hash
|
|
ENVIRONMENTS.each_with_object({}) do |env, config_as_hash|
|
|
config_as_hash[env] = {
|
|
'adapter' => adapter.to_s,
|
|
'database' => "#{database}_#{env}",
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|