Zwykle jest to prosty problem, ale nie jestem do końca pewien, jak rozwiązać ten problem w Scali, ponieważ jest on wrażliwy na typ. Mam klasę, w której skonfigurowałem proste połączenie z moją instancją MongoDB. Teraz na miejscu, robię boga straszne pojęcie tylko komentowanie linii konfiguracji produkcji i odkomentowanie lokalnych/dev. Oto, co każdy z nich wygląda tak:Używanie konfiguracji typesafe do zarządzania połączeniem z bazą danych
// 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
}
}
W miarę coraz nazwę bazy danych przekazywanych w, to banalne - to jest po prostu chwytając ciąg z pliku konfiguracyjnego. Gdzie nie jestem w stanie myśleć o czystym rozwiązaniu, jest to, jak sobie poradzić z tym, że używam instancji List of ServerAddress do zainicjowania MongoConnection() vs nie przekazywanie żadnej Listy do MongoConnection w konfiguracji lokalnej/dev.
Jak korzystać z narzędzia takiego jak config typesafe? Zakładam, że mogę po prostu przekazać pustą listę/tablicę do MongoConnection() dla lokalnego połączenia db, ale nie jestem do końca pewien, jak mogę skonfigurować produkcyjną bazę danych bez modyfikowania funkcji mongoDb. Szukałem takiego narzędzia, które pomogłoby mi w procesie: https://github.com/typesafehub/config
to jest na dobrej drodze, ale to nie będzie działać, ponieważ nie można po prostu przekazać listę do MongoConnection. Oczekuje listy instancji ServerAddress. – randombits
Nie jestem pewien, czy poprawnie spełniłem twoje wymagania. Ja nieznacznie zmodyfikowałem rozwiązanie. Nie można używać żadnych zdefiniowanych przez użytkownika klas/typów w pliku konfiguracyjnym. –