代码之家  ›  专栏  ›  技术社区  ›  Matthew Watson

像Rails这样的数据库迁移?

  •  18
  • Matthew Watson  · 技术社区  · 16 年前

    是否有任何易于安装/使用(在UNIX上)的数据库迁移工具,如Rails迁移?我真的很喜欢这个想法,但是纯粹为了管理我的数据库迁移而安装Ruby/Rails似乎太过杀伤力了。

    6 回复  |  直到 13 年前
        1
  •  23
  •   Ryan McGeary    16 年前

    只需使用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
    

    数据库 :

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

    之后,你就可以跑步了 rake migrate 在没有周围的Rails应用程序的情况下,拥有所有的迁移优势。

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

        2
  •  4
  •   community wiki 2 revs Otto    16 年前

    还有一个项目叫做 Java Database Migrations . 要获取代码,请查看 Google Code page for the project .

        3
  •  3
  •   RyanWilcox    15 年前

    我看这个话题真的很老了,但我会为将来的谷歌搜索者们插手的。

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

        4
  •  1
  •   Otto    16 年前

    我个人没有这样做,但是应该可以使用ActiveRecord::Migration而不使用任何其他Rails工具。正确设置加载路径是很困难的,但实际上您所需要的只是 rake 任务与 db/migrate 目录加上它们所依赖的任何Rails gem,可能 activerecord , actviesupport 也许还有其他一些人喜欢 railties . 我会尝试一下,看看有哪些类丢失了,然后把它们添加进去。

    在以前的公司,我们构建了一个工具,它基本上是ActuvieCord::迁移,但它是用Java编写的,是一个Maven插件。它所做的只是组装SQL脚本的文本块。它只需要知道文件名的顺序,并知道如何更新版本表。

        5
  •  1
  •   Bret Weinraub    13 年前

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

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

    安装它(Git克隆它)并将其用作项目的基础。

        6
  •  0
  •   noahdiewald    13 年前

    下面是一个用haskell编写的工具:

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