2010-04-15 2 views

Antwort

16

Sie können mysql direkt verwenden:

mysqldump app_development | mysql app_test 
+0

Wenn Sie nicht mysql verwenden, hat @ j0k bisher die beste Antwort mit: rake db: test: klon && rake db: seed RAILS_ENV = 'test' – Krut

12

können Sie verwenden:

rake db:test:clone 

die Entwicklung db in Test zu kopieren.

+13

Funktioniert überhaupt nicht für mich. Struktur wird erstellt, aber keine Datensätze werden kopiert. Ist es die Aufgabe, die Daten überhaupt zu kopieren? Die Beschreibung zeigt das nicht direkt. – mdrozdziel

+1

Es hat nicht für mich funktioniert. Die Testdatenbank scheint leer ... –

+9

db: test: clone ist eine Kombination aus db: schema: dump und db: test: prepare und kopiert die * data * nicht wirklich – JohnMetta

4

Wenn Sie nur die Entwicklung der DB in seiner Gesamtheit klonen wollen, was nur mit dem Kopieren der development.sqlite3 falsch ist und es test.sqlite3 umbenennen? Sie können den Prozess automatisieren, indem Sie eine Stapeldatei (oder eine entsprechende Datei auf Ihrem Betriebssystem) einrichten, die Sie über die Befehlszeile ausführen können.

Dies wird lokal funktionieren, aber ich habe gerade festgestellt, dass Sie vielleicht eine nicht-lokale Umgebung denken, in diesem Fall wird es wahrscheinlich nicht.

3

Eine alternative Methode, wenn Sie verwenden Samen (db/seeds.rb)

Fügen Sie zunächst einen Rechen Aufgabe zum Beispiel mit diesem Code/Aufgaben/test_seed.rake Lib:

namespace :db do 
    namespace :test do 
    task :prepare => :environment do 
     Rake::Task["db:seed"].invoke 
    end 
    end 
end 

Dann wenn Sie Ihre Datenbank-Struktur/Inhalt durch Migration und Samen geändert haben, können Sie laufen

rake:db:test:prepare 

das Schema und seed-Daten zu kopieren.

So würde die kompletten Schritte sein:

rake db:migrate 
rake db:seed 
rake db:test:prepare 
+0

Wenn Sie 'rake db: test: prepare' nach' rake db: seed ausführen 'es wird Ihre Seed-Daten löschen =] – professormeowingtons

5

Für alle Datenbanken:

rake db:test:clone && rake db:seed RAILS_ENV='test' 
+0

ops, dachte ich, dass Sie Test-Datenbank mit der seed.rb-Datei füllen wollte. – drr

+2

Aktualisieren Sie das für das, was er will? – dove

3

Mit Postgres, kopieren Sie die Datenbank wie folgt:

CREATE DATABASE newdb mit Vorlage originaldb Eigentümer dbuser;

Verwandte Themen