2015-03-25 16 views
9

Ho un'app Play Framework 2.3. Posso entrare in una console di Scala con activator console. Tuttavia, quando provo a chiamare il codice dalla mia app, in particolare una funzione di supporto che utilizza WS, che utilizza l'implicito import play.api.Play.current per recuperare l'app attualmente in esecuzione, viene visualizzato il messaggio di errore java.lang.RuntimeException: There is no started application.Chiamata all'app Play framework dalla console Scala

Quali passaggi devo seguire per poter caricare la mia app nella sessione della console corrente?

C'è a similar existing question, ma la risposta accettata sembra utilizzare un'app finta dagli helper del framework. Preferibilmente, vorrei correre nel contesto della mia app vera e propria. Se devo usare un'app falso, sarebbe possibile farlo corrispondere al mio ambiente di sviluppo (quello che ottengo durante l'esecuzione di activator run) piuttosto che il mio ambiente di test (cosa ottengo durante l'esecuzione dei test dell'unità)?

Grazie in anticipo!

+0

Qual è l'obiettivo di correre in questo modo? – cchantep

+0

@cchantep È bello poter giocare con le cose nella REPL. –

+0

Analogamente, puoi usare 'StaticApplication' http://stackoverflow.com/questions/24435415/access-models-from-console-in-play-framework Questa domanda essenzialmente chiede la stessa cosa, ad eccezione dei modelli che richiedono il database. Il motivo comune è che entrambi richiedono l'app implicita. –

risposta

8

In questo caso specifico si può solo creare un'istanza di applicazione e utilizzarlo al posto del implicita uno:

// Tested in 2.3.7 
import play.api.{Play, Mode, DefaultApplication} 
import java.io.File 
import play.api.libs.ws.WS 

val application = new DefaultApplication(
    new File("."), 
    Thread.currentThread().getContextClassLoader(), 
    None, 
    Mode.Dev 
) 

import scala.concurrent.ExecutionContext.Implicits.global 

WS.client(application).url("http://www.google.com").get().map((x) => println(x.body)) 
+0

Grazie per il chiarimento! – Ming

+0

Time saver: non funziona in 2.5.4. – asyncwait

+2

Tks per questo. Avevo bisogno di un ulteriore 'Play.start (applicazione)' per iniziare – wwkudu

Problemi correlati