是否有任何易于安装/使用(在 unix 上)的数据库迁移工具,例如 Rails Migrations?我真的很喜欢这个想法,但是纯粹为了管理我的数据库迁移而安装 ruby/rails 似乎有点过头了。
6 回答
只需使用 ActiveRecord 和一个简单的 Rakefile。例如,如果您将迁移放在一个db/migrate
目录中并且有一个database.yml
包含您的 db 配置的文件,那么这个简单的 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 Database Migrations的项目。要获取代码,请查看项目的 Google 代码页面。
我看到这个话题真的很老了,但我会为未来的谷歌人提供帮助。
如果您不想走 ActiveRecord::Migrate 路线,我真的很喜欢使用 Python 的 SQLAlchemy 和SQLAlchemy-Migrate来管理我需要进行版本控制的数据库。
我没有亲自做过,但应该可以使用 ActiveRecord::Migration 而不需要任何其他 Rails 东西。正确设置加载路径将是困难的部分,但实际上您需要的只是rake
任务和db/migrate
目录以及它们所依赖的任何 Rails gem,activerecord
可能actviesupport
是railties
. 我会尝试一下,看看缺少哪些类并添加它们。
在之前的一家公司,我们构建了一个工具,它基本上完成了 ActiveRecord::Migration 的工作,只是它是用 Java 编写的一个 Maven 插件。它所做的只是组装 SQL 脚本的文本块。它只需要对按顺序排列的文件名很聪明,并且知道如何更新版本控制表。
该项目旨在允许在不安装 Rails 的情况下运行活动记录迁移:
https://github.com/bretweinraub/rails-free-DB-Migrate
安装它(git clone it)并将其用作项目的基础。
这是一个用 Haskell 编写的工具: