Ridgepoleの導入・使い方

Ruby on Rails

新しいサイトを作るときに、マイグレーションだと管理が大変だし、めんどいなぁと
思ったので、今の会社でも導入している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でいらないものを色々消したりしたらうまくいった。
再起動とか整理とかって大事だなぁと思った次第・・

コメント

タイトルとURLをコピーしました