2010-09-23 8 views
5

Ho visto alcune app con alcune attività di rake incluse per caricare i dati. Non sto parlando di dati seme, so di db/seeds.rb, invece mi riferisco a dati come utenti predefiniti e record di base che mi aiutano a riempire la mia domanda con qualcosa da guardare. Non voglio usare DB: infissi: Carico perché io non ho alcun controllo su questo ...Attività di rastrellamento per aggiungere dati predefiniti

Vorrei avere compiti rake come questo:

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

dove il 'delete L'attività di rake eliminerebbe tutti i dati che ho specificato nell'attività rake, l'app "load" caricherà i dati predefiniti dall'attività nell'app e l'attività "reload" eliminerà tutti i dati, quindi verrà caricata nell'app. Come faccio a fare qualcosa del genere?

Se potessi darmi un esempio in cui ho un modello chiamato "Contatto" e alcuni campi - fondamentalmente come aggiungere o eliminare dati da quei campi in un'attività rake, lo apprezzerei VERAMENTE!

Solo per darvi un'idea, proverò principalmente queste attività di rake quando passo da un computer a un altro per lo sviluppo. Non voglio entrare manualmente nei record predefiniti (come il mio utente per accedere) quindi potrei semplicemente fare rake myapp: data: reload - questo sarebbe dopo aver fatto rake db: schema: load

Grazie,

BN

risposta

7

Creare un file lib/task/data.rake e scrivere il codice seguente:

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 

Così ora avete definito le attività rake. Sto utilizzando il database_cleaner gemma, quindi è necessario installarlo:

sudo gem install database_cleaner 

Ora, il rake myapp:data:load è fondamentalmente il caricamento dei dati da un file chiamato db/data.rb. Potresti chiamarlo come vuoi, purché tu abbia usato il nome del file nella task rake o potresti usare più di un file se lo volevi ... Quindi crea il file db/data.rb e metti tutto il codice che ti serve ...

User.create(...) 
+0

Grazie per la pronta risposta! Ho fatto esattamente come hai detto tu, ma per qualche ragione non trova il file db/data.rb. Ecco l'errore che ottengo: il rake – dingalingchickenwiing

+0

è stato interrotto! nessun file da caricare - db/data.rb (Vedi traccia completa eseguendo attività con --trace) bash $ – dingalingchickenwiing

+0

Ho provato tutto ... Non troverà ../db/data.rb , ../../db/data.rb o db/data.rb - Non sto avendo fortuna. Per favore aiuto. :( – dingalingchickenwiing

Problemi correlati