Вопрос

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

Это было полезно?

Решение

Просто используйте ActiveRecord и простой Rakefile.Например, если вы поместите свои миграции в db/migrate каталог и иметь database.yml файл, содержащий вашу конфигурацию базы данных, этот простой 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

база данных.yml:

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top