Question

Existe-t-il des outils de migration de base de données faciles à installer / utiliser (sous Unix) tels que Rails Migrations? J'aime beaucoup l'idée, mais installer Ruby / rails uniquement pour gérer les migrations de ma base de données me semble excessif.

Était-ce utile?

La solution

Utilisez simplement ActiveRecord et un fichier Rakefile simple. Par exemple, si vous placez vos migrations dans un répertoire db / migrate et que vous avez un fichier database.yml contenant votre configuration de base de données, ce simple fichier Rakefile devrait fonctionner:

Rakefile:

require 'active_record'
require 'yaml'

desc "Migrate the database through scripts in db/migrate. Target specific version with VERSION=x"
task :migrate => :environment do
  ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end

task :environment do
  ActiveRecord::Base.establish_connection(YAML::load(File.open('database.yml')))
  ActiveRecord::Base.logger = Logger.new(STDOUT)
end

database.yml :

adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost

Ensuite, vous pourrez exécuter rake migrate et bénéficier de toutes les qualités de migration sans application de rails environnante.

J'ai également un ensemble de scripts bash qui remplissent une fonction très similaire à celle des migrations ActiveRecord, mais ils ne fonctionnent qu'avec Oracle. Je les utilisais avant de passer à Ruby and Rails. Elles sont un peu compliquées et je ne les soutiens pas, mais si cela vous intéresse, n'hésitez pas à me contacter.

Autres conseils

Il existe également un projet intitulé Migration de bases de données Java . Pour obtenir le code, consultez la page de code Google du projet . / p>

Je vois que ce sujet est vraiment vieux, mais je vais participer aux futurs googlers.

J'aime beaucoup utiliser SQLAlchemy et SQLAlchemy-Migrate de Python pour gérer les bases de données qui J'ai besoin du contrôle de version, si vous ne voulez pas utiliser la route ActiveRecord :: Migrate.

Je ne l'ai pas personnellement fait, mais il devrait être possible d'utiliser ActiveRecord :: Migration sans aucun des autres éléments de Rails. Configurer correctement le chemin de chargement serait la partie la plus difficile, mais tout ce dont vous avez besoin, c’est des tâches rake et du répertoire db / migrate , ainsi que des gemmes Rails dont ils dépendent, probablement activerecord , actviesupport et peut-être quelques autres comme railties . Je voudrais l'essayer et voir quelles classes manquent et ajouter celles-là.

Dans une entreprise précédente, nous avions créé un outil qui faisait essentiellement ce que fait ActiveRecord :: Migration, à la différence qu’il était écrit en Java sous la forme d’un plug-in Maven. Tout ce que cela a été fait était d'assembler des blobs de texte de scripts SQL. Il faut juste que les noms de fichiers soient dans l’ordre et sachent mettre à jour un tableau de versions.

Ce projet est conçu pour permettre l'exécution de migrations d'enregistrements actifs sans installer Rails:

https://github.com/bretweinraub/rails-free-DB-Migrate

Installez-le (utilisez-le clone) et utilisez-le comme base de votre projet.

Voici un outil pour le faire écrit en Haskell:

http://hackage.haskell.org/package/dbmigrations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top