Abspielen! 2.0 Scala - Zugriff auf globales Objekt
Ich habe ein Objekt deklariert, das beim Start der Anwendung instanziiert wird. Ich möchte in einem Controller darauf zugreifen, der Teil eines Plugins ist. Ich möchte in der Lage sein, dieses Plugin zu verwenden, aber ich komme anscheinend nicht über den ersten Teil hinaus - das Finden des PluginsMyWebsocketConnection
Objekt. Keines der Beispiele zeigt, wie das geht. Ich möchte nicht in den Controller injizieren, weil ich ein Plugin schreibe (ich habe statische Beispiele dafür gesehen, wie man das irgendwo macht).
Global.scala
, Plugin-Anwendung \ 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...");
}
}
Mein benutzerdefinierter Protokollierungs-Plug-in-Controller:
MyLogger.Scala
, Plugin-Anwendung \ app \ controller \ MyLogger.scala
object MyLogger {
def info(message: String) = {
// THIS CAN'T BE FOUND ?
// MyWebsocketConnection.logger.send(message)
}
}
Also, aus dem Stück! 2.0-App, die auf das Plugin verweist, würde ich (wahrscheinlich) so etwas wie das Folgende tun, aber ich kann den Teil vorher nicht einmal hinter mich bringen:
MyFutureController.scala
, noch ein Stück! application \ app \ controller \ MyFutureController.scala
object MyFutureController extends Controller {
def someRandomMethod = Action {
// Custom logging
MyLogger.info("Here's my log message!");
Ok("This documentation stinks!")
}
}