Pregunta

Actualización: como de Grails 1.3.6 se tiene acceso al dominio completo de las escrituras de Gant. A partir de los griales notas de la versión 1.3.6 :

Ahora puede ejecutar una o más maravillosos scripts desde la línea de comandos utilizando el comando de marcha-escritura, por ejemplo.

griales corren-script [ruta-a-script-1] [ruta-a-script-2] ... [ruta-a-script-n]

Esto evita la emisión de secuencias de comandos de Gant donde se puede clases de la aplicación no convenientemente de acceso ya que no está disponible en la ruta de clase cuando comienzan los guiones.


Hola a todos,

Soy nuevo en el uso de Grails (en un proyecto real) y tengo una sola vez script que necesita para ejecutar que lee un archivo y luego rellena mi base de datos.

Yo quería que la secuencia de comandos para ejecutar en el contexto de mi griales aplicación, por lo que utiliza el comando create-script. Ahora entiendo que lo convierte en un guión 'Gant'. La razón de ello es que pensé que me iba a permitir un fácil acceso a todo el dominio griales buena-dad, de modo que yo sería capaz de hacer algo como esto fácilmente:

Car car = new Car(model: 'bar', brand: 'Ford')
car.save()

A continuación, Car es una de mis clases de dominio y las cadenas 'bar' y 'Ford' he recuperado de mi archivo.

El inicio de mi aspecto de script como este:

import com.foo.Car    
grailsHome = Ant.project.properties."environment.GRAILS_HOME"
includeTargets << new File ( "${grailsHome}/scripts/Bootstrap.groovy" )
target(main: "a script for storing cars") {
    depends(bootstrap, classpath) // code dealing with the file with cars follows

Sorprendentemente, maravilloso me da una java.lang.NoClassDefFoundError: com.foo.Car cuando ejecuto el script con el comando grails LoadCars

estoy tomando un enfoque equivocado, o hay algo más sencilla que estoy haciendo mal?

Cualquier ayuda se agradece

¿Fue útil?

Solución

He actualizado la griales corren con scripts en Gant guión (denominado por Jared arriba) para trabajar con Grails 1.3.5. Había tenido la intención de hacerlo durante un tiempo, pero esta pregunta me dio un codazo en finalmente llegar a hacerlo).

Sólo tienes que descargar el script descrito en el puesto, guardar en su griales "scripts" de directorio y, a continuación, puede ejecutar su propio guión maravilloso a los datos de arranque con:

grails run-script script-path/boostrapMyDataIntoApp.groovy

Otros consejos

Sé que los guiones son útiles, y probablemente voy a llegar mensajes de odio por sugerir, pero acabo de incorporar esta un poco de cosas directamente en mi solicitud en el pasado.

Tengo un pabellón conjunto en mi configuración que indica si los datos deben ser bootstrap, de ser así, las miradas código de arranque para un archivo delimitado por comas en el arranque y llama a un método de servicio para cargar los datos.

he tenido que hacer esto y hay que crear una secuencia de comandos especiales para permitirle el acceso GORM de un guión griales estándar. Ver esta pregunta para obtener más información. No estoy seguro de cuál es el estado actual de la secuencia de comandos está bajo griales 1.3 pero el autor del guión escrito en los comentarios.

Hans, hay varias opciones aquí, asumiendo que no están a pulir el scripting GANT chuletas 8 ^)

Así que supongamos que usted está haciendo algún modo TDD integración, correcto? ¿Has mirado en el plug-in db-cosas? En realidad que uno aprovecha el paquete de código abierto (extensión del proyecto JUnit) DBUnit llamada, que es también una excelente opción, tanto para los proyectos de Java y Groovy.

db-cosas <0.3.0> - db esquema de gerencia e importación / exportación de datos. Generar archivos de esquemas genéricos y los datos de importación o exportación de base / semilla / de prueba en su base de datos.


Me han hecho tradicionalmente esto también en el sistema de arranque en función del entorno - y trato de no dejar que esos supuestos de dominio / restricciones se ponen demasiado lejos fuera de sincronización. con mi esquema.

Aquí está el canon que estoy hablando:

class BootStrap {

    def init = { servletContext ->
        if (GrailsUtil.environment.equals( GrailsApplication.ENV_DEVELOPMENT )) {
            log.info( "Loading sample data for 2010 models..." );            

            new Car( manufacturer: new Manufacturer( name: "Toyota" ), model: "Prius" )
            new Car( manufacturer: new Manufacturer( name: "GM" ), model: "Volt" )
//...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top