実戦で使えるように素振り
URL
https://github.com/winebarrel/ridgepole
install
gem 'ridgepole' # スキーマにoptions(ストレージエンジンの設定など)をつける gem 'activerecord-mysql-awesome'
エクスポート
すでにテーブルがある場合はexportする.
ridgepole -c config/database.yml --export -o db/schemas/Schemafile \ --dump-with-default-fk-name --split --enable-mysql-awesome
--dump-with-default-fk-name
Railsの場合は外部キーの名前がfk_rails_xxxx
になるのでそれもエクスポートする。applyするときにも必要--split
テーブルごとにスキーマファイルを分ける--enable-mysql-awesome
create文にoptionをつける
ちなみに limit:4
は4バイト
create_table "tasks", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4" do |t| t.integer "project_id", limit: 4, null: false t.string "title", limit: 255, null: false t.text "description", limit: 65535 t.integer "creator_id", limit: 4, null: false t.integer "updater_id", limit: 4, null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false end add_index "tasks", ["project_id"], name: "fk_rails_02e851e3b7", using: :btree
実行
runするときには --dry-run
をはずす
ridgepole -c config/database.yml --apply \ --dry-run -f db/schemas/Schemafile \ --dump-with-default-fk-name
比較
通常の比較
DBとファイルを比較
ridgepole --diff config/database.yml db/schemas/Schemafile \ --dump-with-default-fk-name
ロールバック的な
ridgepole --diff config/database.yml db/schemas/Schemafile \ --reverse \ --dump-with-default-fk-name