Rails Migrations のような簡単にインストール/使用できる (UNIX 上での) データベース移行ツールはありますか? このアイデアはとても気に入っていますが、データベースの移行を管理するためだけに ruby/rails をインストールするのはやり過ぎに思えます。
6 に答える
ActiveRecordと単純なRakefileを使用するだけです。たとえば、移行をdb/migrate
ディレクトリに配置しdatabase.yml
、db構成を持つファイルがある場合、この単純な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アプリがなくても、実行してすべての移行機能を利用できるようになります。
または、ActiveRecordの移行と非常によく似た機能を実行する一連のbashスクリプトがありますが、これらはOracleでのみ機能します。私はRubyとRailsに切り替える前にそれらを使用していました。それらはやや複雑で、私はそれらをサポートしませんが、興味があれば、遠慮なく私に連絡してください。
Java Database Migrationsというプロジェクトもあります。コードを取得するには、プロジェクトの Google Code ページを確認してください。
このトピックは非常に古いものですが、今後の Google 社員のために参考にさせていただきます。
ActiveRecord::Migrate ルートに行きたくない場合は、 Python の SQLAlchemy とSQLAlchemy-Migrateを使用して、バージョン管理が必要なデータベースを管理するのが本当に好きです。
このプロジェクトは、Rails をインストールせずにアクティブなレコードの移行を実行できるように設計されています。
https://github.com/bretweinraub/rails-free-DB-Migrate
インストール (git clone it) して、プロジェクトのベースとして使用します。
私は個人的にそれを行っていませんが、ActiveRecord::Migration を他の Rails のものなしで使用できるはずです。ロード パスを正しく設定するのは難しい部分ですが、実際に必要なのは、rake
タスクとディレクトリに加えて、db/migrate
それらが依存する Rails gem (おそらく. 私はそれを試して、不足しているクラスを確認して追加します。activerecord
actviesupport
railties
以前の会社では、Maven プラグインとして Java で書かれていることを除いて、ActiveRecord::Migration が行うことと本質的に同じことを行うツールを作成しました。SQL スクリプトのテキスト BLOB を組み立てただけです。ファイル名の順序について賢く、バージョン管理テーブルを更新する方法を知っている必要があります。
Haskell で書かれたこれを行うためのツールを次に示します。