クックパッド開発者ブログで紹介されていたデータベーススキーマ管理ツール Ridgepole を PostgreSQL と組み合わせて利用した際の備忘録
検証環境
- CentOS 6.5
- Ruby 2.1.2
- Bundler 1.6.2
Ridgepole セットアップ
PostgreSQL に接続するのが目的だが Ridgepole が MySQL のライブラリをデフォルトで要求することに注意。
依存ライブラリインストール:
$ sudo yum install -y postgresql-devel mysql-devel
Ridgepole を動かすディレクトリと Gemfile を用意:
$ mkdir ridgepole-pgsql
$ cd rigepole-pgsql
$ cat Gemfile
source 'https://rubygems.org'
gem 'ridgepole'
gem 'pg'
インストール:
$ bundle install --path vendor/bundle
データベースへの接続設定を追加:
$ cat database.yml
adapter: postgresql
encoding: utf8
port: 5432
database: example
username: foo
password: bar
PostgreSQL サーバに接続して各種操作を行う
スキーマのエクスポート:
$ bundle exec ridgepole --config database.yml \
--export --output=Schemafile \
--disable-mysql-unsigned # Postgres に接続するため MySQL のオプションを無効にする
スキーマの分割エクスポート:
$ mkdir schema
$ bundle exec ridgepole --config database.yml \
--export --split --output schema/Schemafile \
--disable-mysql-unsigned
テーブル定義の変更の適用:
$ vi Schemafile # スキーマを編集
$ bundle exec ridgepole \
--config database.yml \
--file Schemefile --apply \
--disable-mysql-unsigned