Levijatanu Levijatanu - 1 year ago 107
Scala Question

EvolutionsComponents in compile-time dependency injection play project

Im trying to understand how to run evolutions using compile-time DI.

import play.api.ApplicationLoader.Context
import play.api.cache.EhCacheComponents
import play.api.mvc.EssentialFilter
import play.api.routing.Router
import play.api._
import play.api.db.evolutions.{ DynamicEvolutions, EvolutionsComponents}
import play.filters.gzip.GzipFilter
import router.Routes

class AppLoader extends ApplicationLoader {
override def load(context: Context): Application = {
LoggerConfigurator(context.environment.classLoader).foreach(_.configure(context.environment))
new AppComponents(context).application
}


}

class AppComponents(context: Context) extends BuiltInComponentsFromContext(context) with EhCacheComponents with EvolutionsComponents {

lazy val applicationController = new controllers.Application(defaultCacheApi)
lazy val usersController = new controllers.Users(defaultCacheApi)
lazy val assets = new controllers.Assets(httpErrorHandler)

applicationEvolutions

// Routes is a generated class
override def router: Router = new Routes(httpErrorHandler, applicationController, usersController, assets)

val gzipFilter = new GzipFilter(shouldGzip =
(request, response) => {
val contentType = response.header.headers.get("Content-Type")
contentType.exists(_.startsWith("text/html")) || request.path.endsWith("jsroutes.js")
})

override lazy val httpFilters: Seq[EssentialFilter] = Seq(gzipFilter)


}


But I keep getting error
Error:(19, 7) class AppComponents needs to be abstract, since method dbApi in trait EvolutionsComponents of type => play.api.db.DBApi is not defined
class AppComponents(context: Context) extends BuiltInComponentsFromContext(context) with EhCacheComponents with EvolutionsComponents

I'am newbie in Scala.

Answer Source

dbApi comes from the DBComponents trait, so your AppComponents class needs to also extend DBComponents.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download