Questo è normalmente un problema semplice, ma non sono completamente sicuro su come risolvere questo problema in Scala dato che è sensibile al testo. Ho una classe in cui ho impostato una semplice connessione alla mia istanza MongoDB. Proprio ora a livello locale, faccio la pessima idea di dio semplicemente commentando le linee di produzione e disapprovando le/dev locali. Ecco quello che ognuno appare come:Uso della configurazione di typesafe per gestire la connessione al mio database
// 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
}
}
Nella misura in cui ottenere il nome del database in passato, questo è banale - è solo afferrare una stringa dal file di configurazione. Dove non sono in grado di pensare a una soluzione pulita è come gestire il fatto che utilizzo un elenco di istanze di ServerAddress per inizializzare MongoConnection() rispetto a non passare alcun Elenco a MongoConnection in una configurazione locale/dev.
Come si può utilizzare uno strumento come la configurazione di typesafe qui? Suppongo di poter passare una lista/array vuota a MongoConnection() per una connessione db locale, ma non sono del tutto sicuro di come posso configurare il database di produzione senza modificare la funzione mongoDb. Ho cercato uno strumento come questo per aiutarmi con il processo: https://github.com/typesafehub/config
questo è sulla strada giusta, ma non funzionerà perché non si può semplicemente passare un elenco di MongoConnection. Si aspetta un elenco di istanze ServerAddress. – randombits
Non sono sicuro se ho ricevuto correttamente la tua richiesta. Ho leggermente modificato la soluzione. Non è possibile utilizzare classi/tipi definiti dall'utente all'interno del file di configurazione. –