2011-01-22 12 views
12

Estoy usando Factory Girl para completar mis datos de semilla y agregarlos a la base de datos en seed.rb.¿Cómo puedo agregar mis datos de inicialización a mi base de datos de prueba usando rake db: seed?

Estoy ejecutando mis pruebas con Cucumber.

Tengo una tabla de precios que contiene los datos iniciales que quiero en todos mis entornos.

Quiero rake db: seed para agregarlo a mi dev y prueba db's y para pepino para poder usar esa semilla de prueba. Luego agregaré esos datos de semilla también en prod.

¿Cómo me puedo asegurar de que mis datos de inicialización se agreguen a los db's de desarrollo y de prueba?

rake db:seed #only adds it only to my dev database 

Respuesta

31

Usted puede intentar algo como esto:

rake db:seed RAILS_ENV=test --trace 
rake db:seed RAILS_ENV=production --trace 
+0

cambiará esto el medio ambiente sólo para esa tarea rake? ¿Debo reiniciarlo después? –

+0

En realidad, no le está diciendo a rake que use los parámetros de acuerdo con su archivo de configuración database.yml. De todos modos, siempre es una buena idea ser prolijo en tus órdenes, al menos cuando estás aprendiendo. Puede ejecutar su aplicación de rieles: scrip/server RAILS_ENV = desarrollo – Christian

7

Salida this answer de un puesto similar.

Realmente creo que es mejor usar fábricas para llenar la base de datos de pruebas. Y si necesita datos de inicialización durante sus pruebas, agréguelo como un bloque before :all en spec_helper/test_helper.

+0

+1 para la educación –

+0

Esta respuesta es mejor para múltiples desarrolladores que realicen los cambios y realicen pruebas en sus máquinas. Con esta respuesta, no tendría que decirles que lean los documentos, que les indicaría que ejecuten: 'rake db: seed RAILS_ENV = test --trace' cada vez. – Dominic

0

También le conviene visitar this thread al trabajar con una base de datos de prueba, especialmente porque no desea conservar los datos en su base de datos de prueba.

A medida que sus pruebas comiencen a evolucionar, lo más probable es que se encuentre utilizando los datos de inicialización, las fábricas y los simulacros, y con los datos persistentes se encontrará con conflictos.

Personalmente me gusta usar un archivo semilla personalizado para mi base de datos de prueba, y cargarlo en mi rails_helper:

DatabaseCleaner.strategy = :truncation 
DatabaseCleaner.clean 

load "#{Rails.root}/db/custom_test_seed.rb" 
Cuestiones relacionadas