Rails-подобные миграции баз данных? - PullRequest
18 голосов
/ 19 сентября 2008

Существуют ли какие-либо простые в установке / использовании (на unix) средства миграции баз данных, такие как Rails Migrations? Мне действительно нравится эта идея, но установка ruby ​​/ rails исключительно для управления миграцией моей базы данных кажется излишней.

Ответы [ 6 ]

23 голосов
/ 19 сентября 2008

Просто используйте ActiveRecord и простой Rakefile. Например, если вы поместили свои миграции в каталог db/migrate и у вас есть файл database.yml с вашей конфигурацией db, этот простой Rakefile должен работать:

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

После этого вы сможете запустить rake migrate и получить все преимущества миграции без приложения окружающих рельсов.

В качестве альтернативы, у меня есть набор сценариев bash, которые выполняют функцию, очень похожую на миграции ActiveRecord, но они работают только с Oracle. Я использовал их до перехода на Ruby и Rails. Они несколько сложны, и я не поддерживаю их, но если вам интересно, не стесняйтесь обращаться ко мне.

4 голосов
/ 20 сентября 2008

Существует также проект под названием Миграция базы данных Java . Чтобы получить код, зайдите на страницу Код Google для проекта .

3 голосов
/ 27 декабря 2009

Я вижу, что эта тема действительно старая, но я буду участвовать в будущих гуглерах.

Мне действительно нравится использовать SQLAlchemy Python и SQLAlchemy-Migrate для управления базами данных, которые мне нужны для контроля версий, если вы не хотите идти по пути ActiveRecord :: Migrate.

1 голос
/ 04 мая 2011

Этот проект предназначен для запуска активных миграций записей без установки Rails:

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

Установите его (git clone) и используйте его в качестве основы для вашего проекта.

1 голос
/ 19 сентября 2008

Я лично этого не делал, но должна быть возможность использовать ActiveRecord :: Migration без каких-либо других вещей Rails. Правильная настройка пути загрузки была бы сложной задачей, но на самом деле все, что вам нужно, это задачи rake и каталог db/migrate, а также любые гемы Rails, от которых они зависят, возможно, activerecord, actviesupport и, возможно, пара других как railties. Я попробовал бы и посмотрел, какие классы отсутствуют, и добавил бы их.

В предыдущей компании мы создали инструмент, который делал в основном то, что делает ActiveRecord :: Migration, за исключением того, что он был написан на Java как плагин Maven. Все, что он делал, это собирал текстовые объекты SQL-скриптов. Нужно просто знать, какие имена идут по порядку, и знать, как обновить таблицу версий.

0 голосов
/ 07 декабря 2011

Вот инструмент для этого, написанный на Haskell:

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

...