scala configuration ostrich

scala - ¿Cómo se usa el avestruz para la configuración?



configuration ostrich (1)

También me gustaría saber la respuesta oficial, pero nadie respondió, así que decidí hurgarme. Lo siento si esta respuesta no es muy completa.

El mejor ejemplo que encontré fue en com.twitter.ostrich.admin.RuntimeEnvironment , especialmente si nos fijamos principalmente en loadConfig .

Digamos que quieres configurar una instancia de la clase T La idea básica es la siguiente:

  • Obtenga un java.io.File que contiene el código fuente de Scala que se evalúa como com.twitter.util.Config[T] .
  • Para ser una Config[T] válida Config[T] , deberá tener un método def apply(): T Para mantener los detalles de la implementación fuera del archivo de configuración, querrá definir una clase en su proyecto que extienda Config[T] . También puede usar esta clase para definir los campos predeterminados / requeridos.
  • Cree una nueva instancia de com.twitter.util.Eval y llame a apply(file) para obtener una instancia de Config[T] .
  • Llame a config.validate() para lanzar las excepciones apropiadas para los archivos de configuración mal formados.
  • Llame a config.apply() para obtener su instancia totalmente configurada de T

Aquí hay un ejemplo simple, donde configuro un nuevo WidgetService :

class WidgetService(val port: Int) class WidgetConfig extends com.twitter.util.Config[WidgetService] { var port = required[Int] def apply(): WidgetService = { new WidgetService(port) } } object MyApp extends App { val configFile = new java.io.File("mywidget_config.scala") val eval = new com.twitter.util.Eval val config = eval[com.twitter.util.Config[WidgetService]](configFile) config.validate() val widgetService = config() println(widgetService.port) }

Y aquí está mywidget_config.scala :

new WidgetConfig { port = 8000 }

Nota: es posible que tenga que hacer modificaciones si coloca esto en un paquete. Hice todo en el paquete por defecto para la brevedad.

Para hacer que funcionen las dependencias, agregué esto a mi configuración SBT:

libraryDependencies += "com.twitter" % "util" % "1.10.1"

Necesito una forma de configurar mi aplicación scala. Configgy parecía ser el camino a seguir en Scala pero está obsoleto https://github.com/robey/configgy#readme y ahora esta funcionalidad está en Ostrich.

¿Hay un ejemplo de código sobre cómo usar Ostrich solo para configuración? No estoy interesado en recoger las estadísticas.