新しいサイトを作るときに、マイグレーションだと管理が大変だし、めんどいなぁと
思ったので、今の会社でも導入しているRidgepoleを使ってみることにしました。
Ridgepoleとは?
railsのmigrateのようなDBスキーマを管理するためのツールだとのこと。
クックパットの人が作ったらしい。gemで簡単に導入できるところがめちゃいい。
使い方
最初にRidgepoleを入れないといけないので、自分のプロジェクトのGemfileに以下のように記述します。
# Gemfile
gem "ridgepole"
バージョン指定したい場合はこんな感じで書いてください。
# Gemfile
gem "ridgepole", "~> 0.8.10"
そして、bundle installとコマンドをうって、反映させてください。
Gemfile.lockを確認して、以下のようになっていたら、OKです。
# Gemfile.lock
ridgepole (0.8.10)
テーブルの作り方
githubのread.meがとてもわかりやすく書いているので、一読しとくといいと思います。https://github.com/winebarrel/ridgepole
テーブルを複数作りたい場合、以下のような構造にします。
db
– schema
- Schemafile
- test1.schema
- test2.schema
そして、.schemaのファイルにテーブル構造を書いていきます。
# test1.schema
# encoding: utf-8
create_table "test1", force: :cascade do |t|
t.string "name", comment: "名前"
t.string "image_url", comment: "画像"
t.integer "group_id", comment: "グループID"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
そして、Schemafileで読み込みたいテーブルのファイルをrequireします。
# Schemafile
require 'test1.schema'
require 'test2.schema'
ここまでで準備は終わりです。次に実行にうつります。
実行
テーブル追加が終わったら、次は以下のコマンドを入力してください。
db/schema/Schemafileのところは、自分のディレクトリ構造に合わせて変えてください。
bundle exec ridgepole -c config/database.yml -f db/schema/Schemafile --apply
dockerでDB作ってるならこんな感じで書いてください。
docker-compose exec web bundle exec ridgepole -c config/database.yml -f db/schema/Schemafile --apply
実行して成功するとこうなります。
Apply `db/schema/Schemafile`
-- create_table("test1")
-> 0.0438s
-- create_table("test2")
-> 0.0201s
これでテーブル追加が簡単にできます!!!!
まとめ
思ったより簡単にRidgepoleを導入できて、テーブルをついかすることができた。
Ridgepoleが流れなくて、詰まってたときdockerの再起動したり、imageでいらないものを色々消したりしたらうまくいった。
再起動とか整理とかって大事だなぁと思った次第・・
コメント