Различные базы данных разработки / производства в скалаке
ScalaQuery требует (AFAIK) использовать импорт вашего поставщика в вашем коде, например:
import org.scalaquery.ql.extended.H2Driver.Implicit._
Мы пытаемся использовать H2 в режиме разработки и MySQL в производстве. Есть ли способ добиться этого?
2 ответа
Мой подход был:
class Subscribers(database: Database)(profile: ExtendedProfile) {
import profile.Implicit._
}
Где подписчики в основном мой объект доступа к данным. Не уверен, что это лучший подход. Это решило мой случай.
Вы бы создали такой DAO, как:
... в производственном коде:
new Subscribers(database)(MySQLDriver)
... и в тестовом коде:
new Subscribers(database)(H2Driver)
Я использую следующее в playframework
object test {
lazy val extendedProfile = {
val extendedProfileName = Play.configuration getString "db.default.extendedProfile" get
companionObjectNamed(extendedProfileName).asInstanceOf[ExtendedProfile]
}
def companionObjectNamed(name: String) : AnyRef = {
val c = Class forName (name + "$")
c.getField("MODULE$") get c
}
}
А затем импортировать
import util.extendedProfile.Implicit._
org.scalaquery.ql.extended.MySQLDriver
это строка, которую я использовал в конфигурации, чтобы заставить работать MySQL.