PHPerでも、既存のプロジェクトでも、今すぐはじめられるRidgepole

  • 14
    いいね
  • 0
    コメント

実践 Database Schema as Code // Speaker Deck

どうやら社内でもRidgepole利用が観測されはじめたのでPHPer用チュートリアル。

事前準備

Rubyをインストールしましょう。

PHPerならRubyのバージョンに悩むことなく、できるだけ新しいRubyにしましょう。

実際に簡単なRidgepoleの導入

Gemfileの設置

コマンドでGemfileの雛形を生成しましょう。

PHPerならプロジェクトでRuby使っていないので何も考えず実施できますね。

$ bundle init

Gemfileを以下のように書き換えます。

# frozen_string_literal: true
source "https://rubygems.org"

gem "ridgepole"
gem "pg" # PostgreSQLを利用する場合
gem "mysql2" # MySQLを利用する場合

Ridgepoleのインストール

$ bundle install

この時点でGemfileもGemfile.lockもコミットしましょう。

database.ymlを作成

Ridgepoleがデータベースに接続するための設定です。

PostgreSQLの場合

adapter: postgresql
encoding: utf8
host: 127.0.0.1
database: my_database
username: postgres
password: xxxxXXXxxxxx
port: 5432

MySQLの場合

adapter: mysql2
encoding: utf8
host: 127.0.0.1
database: my_database
username: myadmin
password: xxxxXXXxxxxx
port: 3306

Schemafileをexport

Ridgepoleは、Schemafileたった1ファイルを管理するだけでOK。

しかも既存のデータベースからSchemafileをエクスポートできる。便利。

$ bundle exec ridgepole -c database.yml --export -o Schemafile

これで今日からRidgepole!!!簡単!!!

スキーマを変更してみる

Schemafileの中を見てみましょう。

PHPerでもだいたい雰囲気でわかると思います。設定ファイルみたいなもんです。

わかりますよね?

試しにカラムを追加してみましょう。Schemafileを雰囲気で修正するだけです。

そして以下のコマンドを実行します。

$ bundle exec ridgepole -c database.yml --apply -f Schemafile --dry-run

--dry-run オプションで実行予定のSQLが分かります。修正方法が間違っていたらここでエラーがでます。

問題なければ実際に適用します。

$ bundle exec ridgepole -c database.yml --apply -f Schemafile

これでスキーマ変更完了!!!簡単!!!

そしてSchemefileをコミットして終わり。

まとめ

PHPerならRidgepole使おうぜ!