¿Migraciones de bases de datos tipo Rails?
-
01-07-2019 - |
Pregunta
¿Existe alguna herramienta de migración de bases de datos fácil de instalar/usar (en Unix) como Rails Migrations?Realmente me gusta la idea, pero instalar Ruby/rails únicamente para administrar las migraciones de mi base de datos parece excesivo.
Solución
Simplemente use ActiveRecord y un Rakefile simple.Por ejemplo, si pones tus migraciones en un db/migrate
directorio y tener un database.yml
archivo que tiene su configuración de base de datos, este simple Rakefile debería funcionar:
Archivo de rastrillo:
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
base de datos.yml:
adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost
Después podrás correr rake migrate
y tenga todas las bondades de la migración sin una aplicación de rieles circundante.
Alternativamente, tengo un conjunto de scripts bash que realizan una función muy similar a las migraciones de ActiveRecord, pero solo funcionan con Oracle.Solía usarlos antes de cambiarme a Ruby y Rails.Son algo complicados y no les brindo soporte, pero si estás interesado, no dudes en contactarme.
Otros consejos
También hay un proyecto llamado Migraciones de bases de datos Java.Para obtener el código consulte el Página de Google Code para el proyecto.
Veo que este tema es muy antiguo, pero colaboraré con futuros usuarios de Google.
Realmente me gusta usar SQLAlchemy de Python y SQLAlchemy-Migrar para administrar bases de datos necesito control de versiones, si no quieres seguir la ruta ActiveRecord::Migrate.
No lo he hecho personalmente, pero debería ser posible usar ActiveRecord::Migration sin ninguna de las otras cosas de Rails.Configurar la ruta de carga correctamente sería la parte difícil, pero en realidad todo lo que necesitas es el rake
tareas y el db/migrate
directorio más cualquier gema Rails de la que dependan, probablemente activerecord
, actviesupport
y tal vez un par más como railties
.Lo probaría y vería qué clases faltan y las agregaría.
En una empresa anterior creamos una herramienta que hacía esencialmente lo que hace ActiveRecord::Migration, excepto que estaba escrita en Java como un complemento de Maven.Todo lo que hizo fue ensamblar bloques de texto de scripts SQL.Solo necesita ser inteligente al ordenar los nombres de archivos y saber cómo actualizar una tabla de versiones.
Este proyecto está diseñado para permitir que se ejecuten migraciones de registros activos sin instalar Rails:
https://github.com/bretweinraub/rails-free-DB-Migrate
Instálalo (git clone it) y úsalo como base para tu proyecto.
Aquí hay una herramienta para hacer esto escrita en Haskell: