HackでDBのマイグレーションツールを作ってみた。
データベースの作成、削除、スキーマ変更の適用、適用の取り消しが一通りできます。
現在のバージョンでサポートしているRDBMSはMySQLのみです。
また、マイグレーションはSQLベースです、DSLはサポートしていません。
使い方
まずはじめに、JSON形式の設定ファイルをルートディレクトリのconfigの下に、database.jsonという名前でおきます。 開発環境、ステージング環境とかは自分で追加してください。
{ "type": "sql", "path": "db/migrate", "enviroments": { "development": { "host": "localhost", "port": 3306, "name": "migrate", "user": { "ENV": "DB_USERNAME" }, "password": { "ENV": "DB_PASSWORD" } } } }
データベースの作成/削除する
create/dropコマンドで、データベースの作成、削除ができます。
データベースの作成
vendor/bin/migrate create
データベースの削除
vendor/bin/migrate drop
マイグレーションを適用する
genコマンドでマイグレーションファイルを作成して、適用する変更をSQLで書いたら、upコマンドで適用できます。 –toオプションで指定したところまで、変更を適用できます。
マイグレーションファイルの生成
vendor/bin/migrate gen create-users
マイグレーションの適用
vendor/bin/migrate up
or
vendor/bin/migrate up --to=20150824010439-create-users
マイグレーションの変更を戻す
downコマンドで適用したマイグレーションを適用前までに戻すことができます。 resetコマンドはすべての変更を元に戻します。
resetコマンドですべて戻らない場合、SQLファイルに漏れがないかを確認してください。
vendor/bin/migrate down 20150824010439-create-users
vendor/bin/migrate reset
今後について
–dry-runオプションを追加して、dry runできるようにしたり、DB作成時にCHARACTER SET、COLLATEを指定できるようにする予定です。
PostgreSQLのサポートは設計プランがまだできてないので、後回しになると思います。