ridgepole 0.6.4 メモ

実戦で使えるように素振り

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