2010-10-23 3 views

risposta

150

È possibile eliminare tutto e ricreare database + semi con entrambi:

  1. rake db:reset: carichi da schema.rb
  2. rake db:drop db:create db:migrate db:seed: carichi da migrazioni

Assicurarsi di avere alcuna connessioni a db (rails server, sql client ..) o il db non verrà rilasciato.

schema.rb è un'istantanea dello stato attuale del database generato da:

rake db:schema:dump 
+0

Grazie per aver invitato le persone a disattivare tutti i server per assicurarsi che il DB venga rilasciato correttamente. – aardvarkk

5

Se non avete voglia di far cadere e ricreare tutta la baracca solo per ricaricare i dati, è possibile utilizzare MyModel.destroy_all (o delete_all) nel file seed.db per pulire una tabella prima che le istruzioni MyModel.create!(...) caricino i dati. Quindi, è possibile ripetere l'operazione ripetutamente. (Ovviamente, questo riguarda solo le tabelle in cui hai caricato i dati, non il resto.)

C'è un "dirty hack" a https://stackoverflow.com/a/14957893/4553442 per aggiungere un'operazione di "de-seeding" simile alla migrazione su e giù. ..

+0

intelligente, ricreare tutto da zero ogni volta ha preso a lungo per me – m02ph3u5

2

come di Rails 5, lo strumento a riga di comando è stato rake con alias come rails così ora

rails db:reset invece di rake db:reset

funzionerà altrettanto bene