2010-04-15 6 views

Répondre

16

Vous pouvez utiliser mysql directement:

mysqldump app_development | mysql app_test 
+0

si vous n'utilisez pas mysql, @ j0k a la meilleure réponse jusqu'à présent avec: rake db: test: clone && rake db: graine RAILS_ENV = 'test' – Krut

12

Vous pouvez utiliser:

rake db:test:clone 

Pour copier le db de développement en test.

+13

Ne fonctionne pas pour moi du tout. La structure est créée, mais aucun enregistrement n'est copié. Cette tâche consiste-t-elle à copier les données? La description ne le désigne pas directement. – mdrozdziel

+1

Cela n'a pas fonctionné pour moi. La base de données de test semble vide ... –

+9

db: test: clone est une combinaison de db: schema: dump et db: test: prépare et ne copie pas réellement les * données * – JohnMetta

4

Si vous voulez juste cloner le DB de développement dans son ensemble, ce qui est mal à copier juste le development.sqlite3 et le renommer test.sqlite3? Vous pouvez automatiser le processus en configurant un fichier de commandes (ou son équivalent sur votre système d'exploitation) que vous pouvez exécuter à partir de la ligne de commande.

Cela fonctionnera localement, mais je viens de me rendre compte que vous pensiez peut-être à un environnement non local, auquel cas ce ne sera probablement pas le cas.

3

Une autre méthode si vous utilisez des graines (db/seeds.rb)

Tout d'abord, ajouter une tâche de coupe par exemple pour lib/tâches/test_seed.rake avec ce code:

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

Ensuite, chaque fois que vous avez changé la structure de votre base de données/contenu par la migration et les graines, vous pouvez exécuter

rake:db:test:prepare 

Pour copier le schéma et les données semences.

Ainsi, les étapes complètes serait:

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

Si vous exécutez 'rake db: test: prepare' après' rake db: graine 'il va supprimer vos données de graine =] – professormeowingtons

5

Pour toutes les bases de données:

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

ops, je pensais que vous vouliez remplir la base de données de test avec le fichier seed.rb. – drr

+2

mettre à jour ce pour ce qu'il veut? – dove

3

Avec Postgres, copiez la base de données comme ceci:

CREATE newdb DATABASE AVEC originaldb TEMPLATE Propriétaire dbuser;