Comment exécuter un fichier mignation de façon dynamique à partir du code source. Signifie que nous voulons exécuter un fichier de migration à partir d'une action d'un contrôleur. Comment pouvons-nous le faire?Exécuter dynamiquement des fichiers de migration
0
A
Répondre
3
Le problème principal était que nous ne connaissions pas les noms des fichiers de migration. Je le fais avec le code suivant
ActiveRecord::Migrator.migrate("vendor/plugins/#{self.id.to_s}/lib/db/migrate/", nil)
Package::Rake.call('db:schema:dump')
Et la classe Rake ont la méthode suivante
def call(task, options={})
options[:rails_env] = Rails.env
args = options.map { |n,v| "#{n.to_s.upcase}='#{v}"}
system "rake #{task} #{args.join(' ')} --trace >> #{Rails.root}/log/rake.log &"
end
Espérons que cela aidera un corps avec des problèmes similaires.
1
Cela suppose la migration est statique et dans votre db/migrate répertoire lorsque le serveur d'applications commence:
Vous pouvez ajouter le répertoire des migrations à votre chemin de chargement automatique dans config/application.rb, puis exiger la migration fichier à exécuter au sein de votre contrôleur (ou dans un initialiseur de configuration):
application.rb
config.autoload_paths += %W(#{Rails.root}/db/migrate)
your_controller.rb
require '20101209102033_some_migration_file'
#....
SomeMigrationFile.up
Je serais intéressé de savoir quel est le cas d'utilisation ici. Semble assez sauvage!
Questions connexes
- 1. Ré-exécuter des fichiers JavaScript
- 2. Exécuter dynamiquement IQueryable, méthode
- 3. Lancement PHP Exécuter des fichiers simultanément
- 4. Exécuter plusieurs fichiers .SQL
- 5. MitratorDotNet (Migrator.Net) - Puis-je utiliser uniquement des fichiers de migration SQL haut/bas?
- 6. Charger dynamiquement des fichiers Javascript et charger des événements d'achèvement
- 7. Activation des avertissements de migration
- 8. jQuery: générer dynamiquement iframe et exécuter $ .ajax (..)
- 9. Insérer dynamiquement le script et exécuter immédiatement
- 10. Comment charger et exécuter dynamiquement tous les fichiers Javascript dans un répertoire?
- 11. Migration automatisée de groupes de fichiers dans SQL Server
- 12. Possibilité de charger/exécuter des fichiers ELF sous OSX
- 13. Comment exécuter des requêtes SQL sur des fichiers MDB?
- 14. Migration des données xml
- 15. Comment exécuter plusieurs fichiers msi
- 16. Créer plusieurs fichiers de téléchargement dynamiquement
- 17. Inclure dynamiquement les fichiers .js de Zend_Controller_Action?
- 18. Comment "dynamiquement" générer un ensemble de fichiers?
- 19. trouver Dynamiquement créer des fichiers avec <ant> tâche
- 20. Fusionner (mélanger, ne pas concaténer) des fichiers audio dynamiquement
- 21. PHP Aide "si" pour inclure dynamiquement des fichiers
- 22. Insérer dynamiquement des dépendances dans View (fichiers Javascript et CSS)
- 23. Exécuter des fichiers .Cs ou.Vb sans appeler le dans asp.net
- 24. Migration vers des systèmes ouverts
- 25. Migration des rails; fusionner deux modèles
- 26. Comment exécuter des requêtes SQL sur différentes bases de données dynamiquement?
- 27. Migration de g ++ vers gcc
- 28. Comment exécuter des fichiers .class sur des fenêtres à partir de la ligne de commande?
- 29. Migration de Drupal vers Drupal
- 30. exécuter dynamiquement une DLL dans une zone Windows distante?
Cas d'utilisation: vous souhaitez tester l'impact des index. Donc, je veux exécuter un script qui a une sous-classe de ActiveRecord :: Migration, une sous-classe de ActiveRecord :: Base (qui lie à une copie d'une table qui m'intéresse); puis exécutez la migration vers le haut, testez les performances sur une copie de la table; annuler la migration; terminé. Je modifie ensuite le script pour créer différents ensembles d'index et vérifier à nouveau. – carlosayam
Je serais intéressé d'avoir un aperçu de cette recherche que vous avez faite! – jacquard