Existe-t-il un moyen trivial de copier les données de la base de données de développement dans la base de données de test? Je sais qu'il existe un moyen de copier le schéma et de recréer la base de données, mais y a-t-il une tâche de rake pour remplir la base de données de test avec celle de développement?Rails - Remplir la base de données de test avec les données de développement
Répondre
Vous pouvez utiliser mysql directement:
mysqldump app_development | mysql app_test
Vous pouvez utiliser:
rake db:test:clone
Pour copier le db de développement en test.
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
Cela n'a pas fonctionné pour moi. La base de données de test semble vide ... –
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
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.
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
Si vous exécutez 'rake db: test: prepare' après' rake db: graine 'il va supprimer vos données de graine =] – professormeowingtons
Avec Postgres, copiez la base de données comme ceci:
CREATE newdb DATABASE AVEC originaldb TEMPLATE Propriétaire dbuser;
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