2011-06-08 20 views
6

Estoy utilizando el tutorial Play Framework yabe y encontré un problema al agregar etiquetas. No estoy seguro de qué código agregué que causó el cambio, pero ahora el fragmento de código Fixtures.loadModels (data.yml) busca un archivo en .../some_folder/play-1.2.1/modules/docviewer/app /data.yml en lugar de .../some_folder/yabe_tutorial/conf/data.yml como debería.Problema con la ubicación del archivo cuando se utiliza Fixtures.loadModels ("...")

Aquí está mi código en el paquete por defecto/yabe_tutorial/app:

@OnApplicationStart 
public class Bootstrap extends Job { 
    public void doJob() { 
    if (User.count() == 0) { 
     Fixtures.delete(); 
     Fixtures.loadModels("data.yml"); 
    } 
    } 
} 

¿Hay alguna configuración que pueda usar para cambiar el directorio que utiliza loadModels?

Soy nuevo en esto, así que realmente agradecería algo de ayuda. ¡Gracias!

+0

Sólo tengo el mismo problema. En el modo PROD, las rutas de los dispositivos están rotas :( –

Respuesta

0

Cuando carga Modelos dentro de la clase de Aparatos, escanea todos los directorios en la lista Play.javaPath. El comportamiento normal es que javaPath contiene los directorios "app" y "conf" de su aplicación, es decir, el directorio raíz (Play.applicationRoot, por defecto es "."). Intenta depurar y ver qué contiene javaPath en tu caso. Tal vez esta muestra de código ayuda:

 
    @Override 
    public void doJob() { 

     if (User.count() == 0) { 
      VirtualFile appRoot = VirtualFile.open(Play.applicationPath); 
      Play.javaPath.add(0, appRoot.child("conf")); 
      Fixtures.loadModels("data.yml"); 
     } 

    } 

Se inserta en Play.javaPath directorio de nuevo a la parte superior del camino. De todos modos, este fragmento de código es bastante feo.

+0

esto no ayudó. En DEV todo funciona bien, pero en PROD se interrumpe y ni siquiera tengo la oportunidad de conectar un depurador. –

1

Sigurd tiene razón. Fixtures.loadModels() busca el archivo yml en Play.javaPath. Intente cambiar el nombre de su archivo data.yml a un nombre único como data-appname.yml y cambie también el nombre del archivo en su código.

@OnApplicationStart 
public class Bootstrap extends Job { 
    public void doJob() { 
    if (User.count() == 0) { 
     Fixtures.loadModels("data-appname.yml"); 
    } 
    } 
} 

Funcionó para mí.

Otra opción es utilizar Play.applicationPath que contiene la ubicación del directorio raíz del proyecto

Fixtures.loadModels(Play.applicationPath + "/app/conf/data-appname.yml"); 
+1

Cambiando a "datos- appname.yml "funcionó para mí también, gracias. – Alex

Cuestiones relacionadas