2010-10-23 18 views
10

¿Existe un comando de rake en Rails 3 para clonar los datos de mi base de datos de desarrollo? Me di cuenta de rake db:test:prepare y rake db:test:clone se mencionan en varios blogs, pero ejecutarlos parece no hacer nada. Además, rake -T no muestra db:test casos. He recurrido a cargar un volcado sql por ahora, pero sería genial si pudiera clonar mis datos de desarrollo existentes para las pruebas actualizadas.Rails 3 Rake Clone Database for Testing Environment

EDITAR - deseo de probar en una base de datos desde que estoy tratando con datos de legado que corro a través de filtros modelo cuando se accede. Las fábricas no me funcionarán en este contexto, ya que los datos pasados ​​a través del create se definen como un esquema diferente al de los datos heredados.

+0

También parece haber perdido 'rake db: test: clone' - ¿alguna vez descubrió cómo recuperarlo? –

+0

Creo que lo eliminaron en Rails 3. –

+0

Sí, pero 'rake db: test: prepare' todavía está allí. Simplemente está oculto (es decir, no tiene una descripción, por lo que no se muestra cuando haces 'rake -Tdb'). –

Respuesta

10

rake db:test:prepare sigue presente aunque no aparezca en rake -Tdb. Supongo que el equipo de Rails decidió desordenar la salida rake -T?

+1

rake db: test: prepare no clona la base de datos. ¿El OP no desea clonar la base de datos, incluidos los datos? – Jamsi

+1

@Jamsi sí, pero el OP también preguntó qué pasó con las tareas de rake que solían aparecer cuando ejecutaste 'rake -Tdb'. Resulta que todavía existen, pero simplemente no se enumeran porque ya no tienen 'desc's. –

1

Sugiero que no clone su base de datos de desarrollo, sino que confíe en las fábricas para proporcionarle datos predecibles que puede diseñar para sus casos de prueba exactos. Tarde o temprano, confiar en tener datos de prueba confiables en una base de datos a la que pueda acceder romperá sus pruebas. También romperá las pruebas de cualquier otra persona que trabaje en el proyecto. Y los cambios/adiciones a los datos no se propagarán a otros desarrolladores como lo harían sus fábricas cuidadosamente construidas.

Mire a través de Machinist, FixJour, FactoryGirl y el lote. Realmente resuelven bien el problema de los datos de prueba y los controles en el control de versiones para que el resto de tu equipo tenga acceso a ellos.

+1

Estoy ejecutando FactoryGirl en la mayoría de mis pruebas, sin embargo, estoy lidiando con datos heredados en mi base de datos que se ejecuta a través de filtros cuando se accede. Por lo tanto, mi verdadero deseo es asegurarme de que mis filtros de conversión heredados en mi modelo sean probados. Por lo que he visto en las fábricas, tengo que pasar todo a través de 'create', que crea un estándar de datos más nuevo que el que tengo en mi base de datos existente. –

+0

¿Puedes aclarar esto? ¿El esquema de la base de datos no es el mismo que el esquema de Rails o hay datos actualmente almacenados que no pasarían la validación? En resumen, lo que me pregunto es cómo está leyendo esta información. –

+0

@Steve Ross - parece que le falta 'rake db: test: *' ... –