Rambler - フレームワーク非依存のデータベースマイグレーション
データベースのバージョン管理とも言えるマイグレーションはRuby on Railsが実装した辺りから注目されるようになりました。新しいフレームワークがあると、ついマイグレーション機能はないのかと探してしまうくらいです。 しかし常にRuby on Railsを使うわけではありません。そこで使ってみたいのが独立したマイグレーションツールのRamblerです。
Ramblerの使い方
Ramblerでは実行するSQLを実際に書いて指定します。rambler upでバージョンアップ時に実行するSQL、rambler downでバージョンダウン時に実行するSQLを書きます。
-- rambler up
CREATE TABLE foo (
id INTEGER UNSIGNED AUTO_INCREMENT,
bar VARCHAR(60),
PRIMARY KEY (id)
);
-- rambler down
DROP TABLE foo;
後はrambler applyコマンドでSQLを反映します。reverseで戻せるようになっています。
$ ./rambler
NAME:
rambler - Migrate all the things!
USAGE:
rambler [global options] command [command options] [arguments...]
VERSION:
3.5.0
AUTHOR:
Romain Baugue <romain .baugue@elwinar.com>
COMMANDS:
apply apply the next migration
reverse reverse the last migration
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--configuration value, -c value path to the configuration file (default: "rambler.json")
--environment value, -e value set the working environment (default: "default")
--help, -h show help
--version, -v print the version
一度実行するとmigrationsというテーブルが作られ、その中に実行したSQLファイル名が入ります。
mysql> show tables;
+--------------------+
| Tables_in_mig_test |
+--------------------+
| foo |
| migrations |
+--------------------+
2 rows in set (0.00 sec)
mysql> select * from migrations;
+----------------------------------+
| migration |
+----------------------------------+
| 201409272258_Added_table_foo.sql |
+----------------------------------+
1 row in set (0.00 sec)
Ramblerの仕組みはシンプルで、O/Rマッパーと連動している訳でも、専用の記法がある訳でもありません。それだけに自由度が高く、データベース特有の機能(トリガーなど)の記述もしやすいでしょう。何よりフレームワーク依存がないのでどのプロジェクトでも扱えます。
RamblerはGo製のオープンソース・ソフトウェア(Public Domain)です。
elwinar/rambler: A simple and language-independent SQL schema migration tool