La situation que j'ai est que nous avons plusieurs schémas sur SQL Server que nous devons être en mesure de faire schéma: vidage et migrations contre. Un schéma est pour notre nouvelle application Rails, l'autre schéma est pour un système hérité dont nous dépendons. Lors de l'exécution de rake db: schema: dump, nos nouvelles tables de schéma sont correctement créées dans le fichier schema.rb. Les tables de schéma héritées ne se retrouvent pas dans schema.rb. Je me demande comment les autres traitent de cette question. Une autre considération que j'ai donnée à ceci est que nos tables de schéma héritées sont assez statiques serait de les ajouter à un fichier séparé une fois, puis créer un crochet avant pour rake db: schema: load qui exécuterait ce fichier avant de le schéma.rb. Existe-t-il un hook avant pour rake db: schema: load; si oui, qu'est-ce que c'est?Rails rake db: schéma: vidage sur la base de données SQL Server avec plusieurs schémas
Répondre
Voici comment j'ai résolu ce problème.
J'ai ajouté un hook avant avant le chargement de schéma et le vidage de schéma dans hooks.rake comme décrit ci-dessous.
namespace :project do
namespace :db do
task :before_schema_load => :environment do
add_tables
end
task :before_schema_dump => :environment do
add_ignored_tables
end
end
end
Rake::Task['db:schema:dump'].enhance(['project:db:before_schema_dump'])
Rake::Task['db:schema:load'].enhance(['project:db:before_schema_load'])
Dans la fonctionnalité add_tables j'ai créé manuellement ce qui est essentiellement une schema.rb statique équivalente pour mes tableaux anciens puisque ceux-ci changeront rarement (peut-être jamais).
Dans les tables add_ignored_tables, j'ai ajouté des tables au tableau ActiveRecord :: SchemaDumper.ignore_tables pour indiquer les tables qui ne font pas partie de mon schéma que je ne veux pas transférer dans schema.rb. Dans mon cas, c'est tout ce qui n'est pas sous le schéma de mon application actuelle. Dans ma situation, tout ce que je veux en dehors du schéma de mon application est spécifié dans add_tables, donc ces tables ne devraient pas se retrouver dans le schéma.rb.
Il y a du matériel sur les bases de données multi-locataires utilisant Postgres, celui que j'ai déjà référencé est http://blog.jerodsanto.net/2011/07/building-multi-tenant-rails-apps-with-postgresql-schemas/. Il y a aussi un bijou (https://github.com/influitive/apartment), qui peut aussi être une source d'inspiration, ou même une solution pour vous.
- 1. rake db: schéma: dump
- 2. Schémas de base de données SQL Server
- 3. Automatiser SQL Server DB schéma Schéma Génération
- 4. Rails: rake db: migrate * très * lent sur Oracle
- 5. Comment puis-je supprimer plusieurs schémas postgres en utilisant rake db: dump: schema
- 6. ce qui est le meilleur outil pour comparer les schémas de base de données SQL Server sur différents serveurs db
- 7. Rôles, schémas, utilisateurs SQL Server
- 8. Exemple de base de données SQL Server de vidage
- 9. SQL Server à la conversion MySql - schéma par rapport à la base de données question
- 10. Décharge de schéma sur la base de données Oracle Oracle à l'aide de db: schema: Dump utilisant Rake
- 11. SQL Server: la même table peut exister dans plusieurs schémas
- 12. SQL Server 2005 restaurer un schéma seulement
- 13. Migration de données sur différents schémas de base de données
- 14. Comment utiliser rake: db: prepare avec mssqlserver?
- 15. Application de rails multi-locataires avec plusieurs schémas
- 16. rake db: schéma: erreur de migration
- 17. SQL Server vidage vers MySQL
- 18. vidage de base de données importées de latin1 db à la base de données UTF8
- 19. rake db: migrate efface ma base de données
- 20. rake db: migrate erreur de schéma non valide pour le rôle qui est propriétaire du schéma
- 21. rake db: créer ruby sur les rails
- 22. Rake n'est pas synchronisé avec ma base de données
- 23. Nouveau schéma de base de données SQL Server utilisant VB.NET
- 24. rake db: création de l'ancienne base de données de l'adaptateur
- 25. Importation (remplissage) de données d'un ancien vidage de base de données vers une nouvelle base de données - Rails
- 26. Chargement de vidage SQL dans la base de données Oracle
- 27. Inclure plus d'un schéma postgres dans rake db: schema: dump?
- 28. rake db: créer vs rake db: créer: tous
- 29. Ruby on Rails rake db: drop
- 30. Vue du schéma SQL Server Management Studio