Agregar datos de muestra a la base de datos usando rake para un motor de rieles
-
06-07-2019 - |
Pregunta
Estoy probando los motores de Rails creando un motor de clasificados donde los usuarios pueden ver / publicar / responder a clasificados.
La aplicación principal contiene código para la autenticación de usuarios y perfiles, mientras que hay un motor que he creado que se ocupará de la funcionalidad de los clasificados.
Ahora quiero agregar algunos datos de muestra a la base de datos para el motor de clasificados. Así que creé un archivo de rake llamado 'sample_classifieds_data.rake' en 'vendor / plugins / classifieds / libers / lib / tasks' y agregué los archivos yml en 'vendor / plugins / classifieds / lib / tasks / sample_classifieds_data'
El código del archivo rake y un archivo yml de ejemplo se pueden encontrar aquí: http: //gist.github .com / 216776
Ahora el problema es que cuando ejecuto la tarea de rake, no se produce ningún error pero los valores no se completan en la base de datos.
¿Alguna idea? Por cierto, es un entorno de desarrollo y la base de datos es la base de datos de desarrollo.
Ejecuté una tarea de rake similar para poblar usuarios de muestra en la base de datos que funcionó. la ubicación de ese archivo de rastrillo 'sample_data.rake' se encontraba en 'lib / tasks'.
Solución
Tu tarea se ve bien. Lo único que haría que su tarea falle de forma silenciosa es que el archivo que está pasando a Fixture.new no apunta a un archivo yml o csv.
Vuelva a verificar modificando la declaración de colocación para imprimir la ruta completa del archivo que importó, y compare lo que se imprime con la estructura de su directorio.
Por ejemplo, ¿las cosas fallarán de forma silenciosa si los archivos de tu dispositivo comienzan con una letra mayúscula? Categories.yml en lugar de categories.yml
Otros consejos
En los bordes de los rieles, puede usar la función rake db: seed
para agregar datos a su base. Consulte el compromiso .
El uso es bastante simple.
Cree un archivo db / seeds.rb
.
Y ponga el código que desee para sembrar su base de datos en él.
Por ejemplo:
Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')
Y cuando quieras inicializar tu base de datos, puedes hacer un rake db: seed
Si, por cualquier motivo, no desea utilizar edge (que sería comprensible en un entorno de producción), puede usar complemento de Seed Fu , que hace el truco por ti.
La tarea db: seed se agregó en Rails 2.3.4. Así que no hay necesidad de correr ventaja.
http: //weblog.rubyonrails .org / 2009/9/4 / ruby-on-rails-2-3-4