关于ruby:类似Rails的数据库迁移?

Rails-like Database Migrations?

是否有任何易于安装/使用(在unix上)的数据库迁移工具,如Rails迁移? 我真的很喜欢这个想法,但是纯粹安装ruby / rails来管理我的数据库迁移似乎有些过分。


只需使用ActiveRecord和一个简单的Rakefile。例如,如果将迁移放在db/migrate目录中并且具有包含db config的database.yml文件,则此简单的Rakefile应该可以正常工作:

Rake文件:

1
2
3
4
5
6
7
8
9
10
11
12
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的:

1
2
3
4
5
6
adapter: mysql
encoding: utf8
database: test_database
username: root
password:
host: localhost

之后,您将能够运行rake migrate并拥有所有迁移优势,而无需使用环绕的应用程序。

或者,我有一组bash脚本,它们执行与ActiveRecord迁移非常相似的功能,但它们只适用于Oracle。我曾经在切换到Ruby和Rails之前使用它们。它们有点复杂,我不提供支持,但如果您有兴趣,请随时与我联系。


还有一个名为Java Database Migrations的项目。要获取代码,请查看项目的Google代码页。


我看到这个主题真的很老了,但我会为未来的googlers筹码。

如果您不想使用ActiveRecord :: Migrate路由,我真的很喜欢使用Python的SQLAlchemy和SQLAlchemy-Migrate来管理我需要版本控制的数据库。


此项目旨在允许在不安装Rails的情况下运行活动记录迁移:

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

安装它(git clone it)并将其用作项目的基础。


我没有亲自完成它,但应该可以在没有任何其他Rails的情况下使用ActiveRecord :: Migration。正确设置加载路径将是困难的部分,但实际上您只需要rake任务和db/migrate目录以及它们所依赖的任何Rails宝石,可能是activerecordactviesupport以及其他几个喜欢railties。我试试看,只看到缺少哪些类并添加它们。

在之前的公司,我们构建了一个基本上与ActiveRecord :: Migration相同的工具,除了它是用Java编写的Maven插件。它所做的只是组装SQL脚本的文本blob。它只需要知道有序的文件名,并知道如何更新版本控制表。


这是一个用Haskell编写的工具:

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