Grać! 2.0 Scala - Dostęp do obiektu globalnego
Zadeklarowałem obiekt, który zostanie utworzony podczas uruchamiania aplikacji. Chcę uzyskać do niego dostęp w kontrolerze, który jest częścią wtyczki. Chcę móc korzystać z tej wtyczki, ale nie wydaje mi się, aby przejść przez pierwszą część - znaleźćMyWebsocketConnection
obiekt. Żaden z przykładów nie pokazuje, jak to zrobić. Nie chcę wstrzykiwać do kontrolera, ponieważ piszę wtyczkę (widziałem statyczne przykłady, jak to zrobić).
Global.scala
, aplikacja wtyczek app Global.scala
object Global extends GlobalSettings {
object MyWebsocketConnection {
val logger = // return something that gets instantiated once, like websocket object for logging to ui
}
class MyWebsocketConnection {
import MyWebsocketConnection.logger
}
override def onStart(app: Application) {
Logger.info("Application has started...");
}
}
Mój niestandardowy kontroler wtyczki logowania:
MyLogger.Scala
, aplikacja do wtyczek aplikacja kontrolery MyLogger.scala
object MyLogger {
def info(message: String) = {
// THIS CAN'T BE FOUND ?
// MyWebsocketConnection.logger.send(message)
}
}
Więc z Play! 2.0, która odwołuje się do wtyczki, zrobiłbym (prawdopodobnie) coś podobnego do poniższego, ale nie mogę nawet przekroczyć tej części:
MyFutureController.scala
, kolejna gra! aplikacje aplikacja kontrolery MyFutureController.scala
object MyFutureController extends Controller {
def someRandomMethod = Action {
// Custom logging
MyLogger.info("Here's my log message!");
Ok("This documentation stinks!")
}
}