0
votes

I tried to debug some functions in REPL:

activator console -Dconfig.file=conf/test.conf
scala> new play.core.StaticApplication(new java.io.File("."))
scala> import models._

The lines above works well, but when I call a method which depends on an implicit DB session, it complains:

scala> Employee.listProjectsByEmployee(5)
<console>:11: error: could not find implicit value for parameter db: play.api.db.slick.Database
              Employee.listProjectsByEmployee(5)

I tried to import a DB value like this, but it didn't work:

scala>   implicit val myDb = play.api.db.slick.DB
<console>:10: error: You do not have an implicit Application in scope. If you want to bring the current running Application into context, just add import play.api.Play.current
         implicit val myDb = play.api.db.slick.DB

I also tried to import Play.current but it didn't work, either..

scala> import play.api.Play.current
import play.api.Play.current

scala>   implicit val myDb = play.api.db.slick.DB
<console>:12: error: You do not have an implicit Application in scope. If you want to bring the current running Application into context, just add import play.api.Play.current
         implicit val myDb = play.api.db.slick.DB

And this didn't work either..

implicit val myDb2 = play.api.db.slick.Database
myDb2: play.api.db.slick.Database.type = play.api.db.slick.Database$@7e0b6883

Does anyone have ideas about how to import an implicit play.api.db.slick.Database?

Thanks!

1
To create an db instance you need an implicit application. I don't think having an import actually brings the implicit in scope in REPL. Try adding implicit def app = play.api.Play.current or pass it explicitly. - mohit

1 Answers

0
votes

You can use FakeApplication from the test console:

$ activator test:console

scala> import play.api._

scala> import play.api.test.FakeApplication

scala> Play.start(FakeApplication())

My database is postgresql:

scala> import play.api.db.slick.DatabaseConfigProvider

scala> import slick.driver.JdbcProfile

scala> import slick.driver.PostgresDriver.api._

scala> implicit val db = DatabaseConfigProvider.get[JdbcProfile](Play.current).db

--> db:  slick.driver.JdbcProfile#Backend#Database =
         slick.jdbc.JdbcBackend$DatabaseDef@5107d916