Обычно это прямая проблема, но я не совсем уверен, как решить ее в Scala, учитывая, что она чувствительна к типу. У меня есть класс, в котором я устанавливаю простое соединение с моим экземпляром MongoDB. Прямо сейчас локально я делаю ужасную идею, просто комментируя строки рабочей конфигурации и раскомментируя строки local/dev. Вот как выглядит каждый из них:
// production
object MongoReplicaConnection {
def mongoDb = {
val addresses = List(new ServerAddress("10.1.1.2" , 27017), new ServerAddress("10.1.1.3" , 27017), new ServerAddress("10.1.1.4" , 27017))
val mongoConn = MongoConnection(addresses)
val db = mongoConn("mydb")
db
}
}
// local development
object MongoReplicaConnection {
def mongoDb = {
val mongoConn = MongoConnection()
val db = mongoConn("mydb_local")
db
}
}
Что касается передачи имени базы данных, это тривиально - это просто захват строки из файла конфигурации. Где я не могу придумать чистое решение, так это как справиться с тем фактом, что я использую список экземпляров ServerAddress для инициализации MongoConnection(), а не передавать какой-либо список в MongoConnection в локальной/dev-настройке.
Как вы можете использовать здесь такой инструмент, как конфигурация typesafe? Я предполагаю, что могу просто передать пустой список/массив в MongoConnection() для локального соединения с БД, но я не совсем уверен, как настроить производственную базу данных без изменения функции mongoDb. Я искал такой инструмент, чтобы помочь мне в этом процессе: https://github.com/typesafehub/config