18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-15

実践 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使おうぜ!

18
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?