PostgreSQLには商用DBと同様のスキーマというネームスペースがあります。MySQLはCREATE SCHEMAがCREATE DATABASEの別名であり、スキーマのレイヤがありません。
以下のように、接続設定のdatabase.yamlにschema_search_pathオプションを追加することで、ridgepoleもスキーマ内のテーブルメンテナンスが可能です。
development:
adapter: postgresql
encoding: unicode
database: some_db
host: localhost
username: scott
password: tiger
schema_search_path: "some_schema"
なお、schema_search_path
オプション(pg gem由来)自体はカンマ区切りで複数のスキーマを指定できますが、ridgepoleとの組み合わせでは適切に動作しませんでした。
また、当然ですが、ridgepoleからDDLを実行する前に、該当のデータベース(上の例ではsome_db)に接続のうえ、CREATE SCHEMAでスキーマを作成しておく必要があります。psql接続時にDB指定を省略するとpostgresデータベースに接続するため、目的のDB内にスキーマを作成できていない、という失敗が起こり得ます。
⁋ 2019/07/13↻ 2024/11/07
中馬崇尋
Chuma Takahiro
Chuma Takahiro