类似Rails的数据库迁移?

18

有没有类似Rails Migrations这样易于安装/使用的(在Unix上)数据库迁移工具?我真的很喜欢这个想法,但是仅为了管理我的数据库迁移而安装ruby/rails似乎过于繁琐。

6个回答

23

只需使用ActiveRecord和简单的Rakefile即可。例如,如果您将迁移放在 db / migrate 目录中,并且有一个 database.yml 文件来配置数据库,那么这个简单的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,并且在没有周围Rails应用程序的情况下获得所有迁移好处。
或者,我有一组bash脚本,执行与ActiveRecord迁移非常相似的功能,但它们仅适用于Oracle。在切换到Ruby和Rails之前,我曾经使用过它们。它们有些复杂,而且我不提供支持,但如果您有兴趣,请随时与我联系。

4

看起来很有趣,但我找不到它的下载链接? - Matthew Watson
看起来至少有源代码库。我编辑了原始答案,所以不用展开评论也很明显。希望这能帮到你。 - Otto
这个项目目前没有下载。 :( - Matthew Watson

3

我知道这个话题已经很老了,但是我想为未来的谷歌搜索者提供帮助。

我非常喜欢使用Python的SQLAlchemy和SQLAlchemy-Migrate来管理需要进行版本控制的数据库,如果你不想采用ActiveRecord::Migrate的方法。


1

1

我个人没有亲自尝试过,但应该可以在不使用其他Rails内容的情况下使用ActiveRecord::Migration。正确设置加载路径可能是困难的部分,但实际上您只需要rake任务和db/migrate目录以及它们依赖的任何Rails gem,可能包括activerecordactviesupport和像railties这样的其他几个。我建议您尝试一下,看看缺少哪些类并添加它们。

在之前的公司中,我们构建了一个工具,基本上做了ActiveRecord::Migration所做的事情,只不过它是作为Maven插件用Java编写的。它所做的就是组装SQL脚本的文本块。它只需要聪明地处理按顺序进行的文件名,并知道如何更新版本控制表。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接