2015-05-29 9 views
6

Ho installato il seguente: 1.Play 2.4 2.Created un progetto di scala 3.Added il Plug-in EclipseCome installare ReactiveMongo in gioco 2.4?

Ora ho voluto aggiungere una connessione al database. Voglio provare ReactiveMongo, ma le istruzioni sulla pagina wiki sono per 2.3 o precedenti.

https://github.com/ReactiveMongo/Play-ReactiveMongo

Per 2.4 Sembra che la struttura dei file di gioco è cambiato. Devo conoscere il modo corretto per configurare la riproduzione 2.4 per ReactiveMongo.

Ecco le istruzioni che danno per le versioni più recenti di gioco di 2,4:

If you want to use the latest snapshot, add the following instead (only for play > 2.3): 

resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" 

libraryDependencies ++= Seq(
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.0-SNAPSHOT" 
) 

Configure your application to use ReactiveMongo plugin 
add to your conf/play.plugins 

1100:play.modules.reactivemongo.ReactiveMongoPlugin 

Configure your database access within application.conf 

Come dovrei là di configurazione si applicano alla nuova struttura del file di gioco 2.4?

Questo è quello che ho cercato di fare senza successo: Nel progetto/plugins.sbt ho aggiunto:

resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" 


addSbtPlugin("org.reactivemongo" % "play2-reactivemongo" % "0.11.0-SNAPSHOT") 

ricevo un messaggio di errore risolvere:

 at java.lang.Thread.run(Thread.java:745) 
[error] (*:update) sbt.ResolveException: unresolved dependency: org.reactivemong 
o#play2-reactivemongo;0.11.0-SNAPSHOT: not found 

Così, dopo imparando che avevo bisogno di aggiungere la dipendenza al file /build.sbt e ho apportato le modifiche lì.

name := """oneid-scala""" 

version := "1.0-SNAPSHOT" 

lazy val root = (project in file(".")).enablePlugins(PlayScala) 

scalaVersion := "2.11.6" 

libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    specs2 % Test 
) 

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases" 

//This is for reactivemongodb 
resolvers += "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/" 

//This is for reactivemongodb 
libraryDependencies ++= Seq(
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.0-SNAPSHOT" 
) 

// Play provides two styles of routers, one expects its actions to be injected, the 
// other, legacy style, accesses its actions statically. 
routesGenerator := InjectedRoutesGenerator 

EclipseKeys.createSrc := EclipseCreateSrc.All 

Dopo aver eseguito questi passaggi, volevo verificare se l'installazione fosse stata eseguita correttamente. Così ho tentato di aggiungere il codice tutorial per il mio progetto da https://github.com/ReactiveMongo/Play-ReactiveMongo

/app 
    /controllers/Application.scala 
    /controllers/UsingJsonReadersWriters.scala 
    /models/models.scala 
/conf 
    /routes 

Poi faccio un attivatore pulita Poi faccio una corsa attivatore

vedo un errore dopo la corsa:

missing or invalid dependency detected while loading class file 'JSONGenericHandlers.class'. 
Could not access type GenericHandlers in package reactivemongo.api.collections, because it (or its dependencies) are missing. 
Check your build definition for missing or conflicting dependencies. 
(Re-run with `-Ylog-classpath` to see the problematic classpath.) 
A full rebuild may help if 'JSONGenericHandlers.class' was compiled against an incompatible version of reactivemongo.api.collections. 

Quindi, sembra che la mia installazione non sia riuscita. Quindi, questa domanda è ancora aperta.

+0

È possibile dare un'occhiata alla [documentazione] (http://reactivemongo.org/releases/0.11.0/documentation/tutorial/play2.html) aggiornata poiché il plug-in è già disponibile come 0.11.0. play24-M2 (pietra miliare che sta per essere rilasciata come 0.11 finale). – cchantep

risposta

1

Aggiungere la seguente riga al vostro build.sbt:

"org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play24" 

esempio:

libraryDependencies ++= Seq(
    jdbc, 
    cache, 
    ws, 
    specs2 % Test, 
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.0.play24", 
    "org.scalatest" % "scalatest_2.11" % "2.2.4" % "test" 
) 

Per quanto riguarda gli esempi sul mongo reattivo, non ho mai avuto loro lavoro. Penso che potrebbero essere un po 'antiquati. Prova (Non è il miglior esempio, ma semplice):

import reactivemongo.api.MongoDriver 
import reactivemongo.api.collections.bson.BSONCollection 
import reactivemongo.bson.BSONDocument 
import scala.concurrent.Await 
import scala.concurrent.ExecutionContext.Implicits.global 
import scala.concurrent.duration._ 

class RMongoTest(){ 
    def run = { 
    val dbHosts: List[String] = List("localhost") 
    val dbName = "TestDB" 
    val driver = new MongoDriver 
    val connection = driver.connection(dbHosts) 
    val db = connection("TestDB") 
    val collection :BSONCollection = db("TestCollection") 

    val futureInsert = collection.insert(BSONDocument("Moo" -> "Over")) 
    Await.result(futureInsert, 10.seconds) //Not really a great pattern... 

    val futureResult = collection.find(BSONDocument()).one 
    val result = Await.result(futureResult, 10.seconds) 
    println(result.get.get("Moo")) 
    } 
} 
0

Se qualcuno è ancora alla ricerca di risposte: In Play 2.4.x la dipendenza da aggiungere al vostro build.sbt assomiglia a questo ...

Per ReactiveMongo 0.11.7:

libraryDependencies ++= Seq(
    // ... 
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.7.play24" 
) 

Per ReactiveMongo 0.11.9 (pubblicato il 20 dicembre 2015):

scalaVersion := "2.11.7" 

libraryDependencies ++= Seq(
    // ... 
    "org.reactivemongo" % "play2-reactivemongo_2.11" % "0.11.9" 
    // Or to let SBT add the Scala version suffix automatically: 
    "org.reactivemongo" %% "play2-reactivemongo" % "0.11.9" 
) 

noti che la nomenclatura sembra cambiare di volta in volta. Per le versioni successive è possibile provare questi passaggi:

  • Andare al Maven Central Repository e cercare g:"org.reactivemongo" play.
  • Cerca un oggetto artefatto che termini grosso modo con la tua versione di Scala, ad es. play2-reactivemongo_2.11 se hai Scala 2.11.x.
  • Fare clic sul numero di versione (ad esempio 0.11.9) in tale riga, che porta a una pagina come this.
  • Nella sezione Informazioni sulle dipendenze, fare clic su "Scala SBT".
  • Copia la riga nel file build.sbt. Se si dispone di una sezione libraryDependencies ++= Seq(...), copiare solo la parte successiva allo +=.
Problemi correlati