これは通常、単純な問題ですが、型に依存することを考えると、Scala でこれを解決する方法が完全にはわかりません。MongoDB インスタンスへの単純な接続をセットアップするクラスがあります。現在、ローカルで、本番構成行をコメントアウトし、ローカル/開発行のコメントを外すというひどい考えを実行しています。それぞれの外観は次のとおりです。
// 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 に渡さないという事実を処理する方法です。
ここで typesafe の config のようなツールをどのように使用できますか? ローカル db 接続のために空の List/array を MongoConnection() に渡すことができると仮定していますが、mongoDb 関数を変更せずに運用データベースを構成する方法が完全にはわかりません。このプロセスを支援するために、次のようなツールを検討してきました: https://github.com/typesafehub/config