課題
- 既存のPostgreSQLのDBがある
-
db/schema.rbがないとrspecを動かす時にテーブルが作られない -
rake db:schema:dumpではコメントやview定義などがdumpされない
対応
スキーマフォーマットの変更
通常はrubyのdslで書かれたschema.rbを読み込むが、下記のような設定をすることでpg_dumpで出力したsqlをスキーマとして利用でる
config/appliction.rb
config.active_record.schema_format = :sql
pg_dumpでの出力
rake db:structure:dumpで吐かれるのと同じファイル名でpg_dumpの結果を置く。
$ pg_dump --schema-only database_name > db/structure.sql
マスターデータも追加しておく(optional)
もし利用したいマスターデータがある場合は db/structure.sql に追記しておく
$ pg_dump -a -t some_master_table -t other_master_table >> db/structure.sql
完了!
こうすることでrspecが既存のDB構造をもとに実行できるようになる