2010-09-23 13 views
5

He visto algunas aplicaciones que tienen algunas tareas de rake incluidas para cargar datos. No estoy hablando de datos iniciales, sé de db/seeds.rb, en su lugar me refiero a datos como los usuarios predeterminados y los registros básicos que me ayudan a llenar mi aplicación con algo que mirar. No quiero utilizar DB: accesorios: carga, porque no tengo ningún control sobre esto ...Rake task para agregar datos predeterminados

me gustaría tener tareas rake como este:

rake myapp:data:delete 
rake myapp:data:load 
rake myapp:data:reload 

Cuando el 'delete 'la tarea de rake eliminaría todos los datos que especifico en la tarea de rake, la aplicación de' carga 'cargará los datos predeterminados de la tarea en la aplicación y la tarea' recargar 'eliminará todos los datos, luego los cargará en la aplicación. ¿Cómo hago algo como esto?

Si pudiera darme un ejemplo donde tengo un modelo llamado 'Contacto' y unos pocos campos, básicamente cómo agregar o eliminar datos de esos campos en una tarea de rake, ¡REALMENTE lo apreciaría!

Sólo para dar una idea, me gustaría utilizar principalmente estas tareas rake cuando muevo de un ordenador a otro a hacer el desarrollo. No quiero ingresar manualmente los registros predeterminados (como mi usuario para iniciar sesión) así que podría hacer rake myapp: data: reload - esto sería después de rake db: schema: load

Gracias,

BN

Respuesta

7

Crear un archivo lib/tareas/data.rake y escribir el siguiente código:

require File.join(File.dirname(__FILE__), '../../config/environment') 
require 'database_cleaner' 

namespace :myapp do 
    namespace :data do 

    task :delete do 
     DatabaseCleaner.strategy = :truncation 
     DatabaseCleaner.clean 
    end 

    task :load do 
     require 'db/data.rb' 
    end 

    task :reload do 
     Rake::Task['myapp:data:delete'].invoke 
     Rake::Task['myapp:data:load'].invoke 
    end 

    end 
end 

Así que ahora que tiene definidas las tareas del rastrillo. Estoy usando el database_cleaner joya, por lo que necesita para instalarlo:

sudo gem install database_cleaner 

Ahora, el rake myapp:data:load es básicamente la carga de los datos de un archivo llamado db/data.rb. Podría nombrar cualquier cosa que desee siempre y cuando use el nombre del archivo en la tarea de rake o podría usar más de un archivo si quisiera ... Así que cree el archivo db/data.rb y coloque todo el código que necesita ...

User.create(...) 
+0

Gracias por la pronta respuesta! Hice exactamente lo que dijiste, pero por alguna razón no está encontrando el archivo db/data.rb. Este es el error que recibo: – dingalingchickenwiing

+0

¡rake abortado! No existe el fichero a cargar - db/data.rb (Ver traza completa mediante la ejecución de tareas con --trace) bash $ – dingalingchickenwiing

+0

He intentado todo ... No va a encontrar ../db/data.rb , ../../db/data.rb o db/data.rb - No estoy teniendo suerte. Por favor ayuda. :( – dingalingchickenwiing

Cuestiones relacionadas