はとのーと

エジソンノート(アイデア、思い付き、メモ)として使っています。誰かの役に立つかもしれないので公開しています。

Migr8.rbについてのメモ

Migr8.rbはDBスキーママイグレーションツールです。

使い方スライド(公式)

www.slideshare.net

入手

curl -Lo migr8.rb http://bit.ly/migr8_rb
chmod a+x migr8.rb

接続先データベースとエディタの設定

環境変数MIGR8_COMMANDMIGR8_EDITORに設定する。 PostgreSQLemacsの場合は次のようにする。 他の設定は上記スライドを参照。

export MIGR8_COMMAND="psql -qX -U user1 mydb"
export MIGR8_EDITOR="emacsclient -n"

ヘルプ

./migr8.rb readme
./migr8.rb help

初期化

./migr8.rb init

マイグレーションの流れ

  1. マイグレーションファイルを作成する
  2. マイグレーションファイルをデータベースに適用する

マイグレーションファイルを作成する

マイグレーションファイルはデータベースオブジェクトの変更をするスクリプトYAML形式で書く。

./migr8.rb new --table=users            # テーブルを作成
./migr8.rb new --column=users.group_id  # カラムを追加
./migr8.rb new --index=users.name       # インデックスを追加
./migr8.rb new --unique=users.owner_id  # ユニークインデックスを追加

エディタが起動しテンプレートが表示されるので内容を書き換える。

マイグレーションファイルをデータベースに適用する

マイグレーションファイルを適用することでデータベースオブジェクトを変更する。

./migr8.rb up       # 1つだけ適用
./migr8.rb up -n 3  # 3つ適用
./migr8.rb up -a    # 全部適用

マイグレーションファイルを戻す

戻すことでデータベースオブジェクトへの変更を戻すことができる。

./migr8.rb down        # 1つだけ戻す
./migr8.rb down -n 3   # 3つ戻す
./migr8.rb down --ALL  # 全部戻す

マイグレーションファイルを再度適用する

戻してからエディタで修正し、再び./migr8.rb upで適用する。

またはredoで1つ戻し、再度適用する。

./migr8.rb redo        # 1つだけ戻し、再度適用する
./migr8.rb redo -n 3   # 3つ戻し、再度適用する
./migr8.rb redo --ALL  # 全部戻し、再度適用する

マイグレーションファイルを削除する

マイグレーションファイルを完全になかったことにするには、まずupしていたらdownして取り消す。 次にdelete --Imsureで削除する。

./migr8.rb down
./migr8.rb delete --Imsure version

マイグレーションファイルの一覧を表示する

./migr8.rb status

マイグレーションファイルの中身を表示する

./migr8.rb show          # 直近の1件を表示
./migr8.rb show version  # 指定したバージョンを表示

データベースを切り替えた時の動作

まず./migr8.rb statusでどのマイグレーションファイルを適用すべきか確認する。

データベースに適用されていないマイグレーションファイルがある時は(not applied)と表示される。

upで適用する。 applyで個別のバージョンを適用できる。

./migr8.rb up             # 未適用のうち最も古いものを適用
./migr8.rb apply version  # 指定したバージョンを適用

適用すべきマイグレーションファイルはmigr8/history.txtに格納されている。
実際に適用されたマイグレーションファイルはデータベース内の_migr8_historyに格納されている。