2012-03-24 12 views
6

heroku run rake db:migrate funziona bene per alterare la struttura del database di produzione:Come popolare il database di produzione (heroku) con i dati di sviluppo? (Rails)

Migrating to CreateUsers (20120318090252) 
Migrating to AddIndexToUsersEmail (20120319191315) 
Migrating to AddPasswordDigestToUsers (20120319194632) 
Migrating to AddRememberTokenToUsers (20120323142854) 

Ma le voci , i dati che ho aggiunto al mio database di sviluppo locale non sono stati caricati al database di produzione Heroku .

è normale, o c'è un modo per rendere la partita due database?

Grazie in anticipo.

+0

vuoi dire che hai dati sul box locale che vuoi in produzione? Quanti dati sono? Compilazione di tabelle di ricerca? – natedavisolds

risposta

6

Le migrazioni possono gestire sia la struttura (schema) che i dati, ma una volta avviato, il presupposto è che nella maggior parte dei casi i dati di produzione sono la fonte di informazioni canonica. Se ci sono dati necessari per impostare il database, ad esempio cose come elenchi ("Mastercard, Visa, Amex) o dati di bootstrap (ad es. Impostare un utente amministratore) questo può andare nel file" semi .rb ". che fa una copia di un database (schema e contenuto) e lo applica automaticamente: in genere questo è una cosa singola.

(Passa alla altra direzione - copia del database di produzione su QA o istanze di sviluppo è un caso di uso comune, in un primo momento si potrebbe pensare: Rails dovrebbe essere in grado di farlo, ma copiare un tipico database di produzione può essere irto di problemi, il più importante è: copiare un database di produzione con informazioni utente è un rischio significativo per la sicurezza qualsiasi operazione di copia dovrebbe perlomeno rendere anonimi gli utenti: un secondo problema riguarda solo le dimensioni del database: un database di produzione è spesso utile o addirittura necessario per riprodurre problemi di prestazioni reali o altri casi limite, ma qualsiasi database di grandi dimensioni richiederà molto tempo per essere replicato ed è altamente dipendente sia dal database specifico che si sta utilizzando, sia dalle autorizzazioni)

Insomma, Rails fa la cosa giusta con la migrazione: assume aggiornamenti strutturali sono OK, ma richiede di compilare i dati. Spero che questo ti aiuti!

8

Questo è il comportamento normale. rake db:migrate creerà solo la struttura del tuo database. Se vuoi duplicare i dati che hai già in sviluppo su Heroku, usa il comando heroku db:push, o semplicemente usa il seed.rb se vuoi inizializzare il database con alcuni record fissi.

Problemi correlati