個人的メモ:Rails AntiPatterns(18)
Chapter 9 Databases
- railsはORMマッパーによって、DBの事を意識せずに済むように設計されているが、それでも気にしなければいけない点はある
AntiPattern: Messy Migrations
- railsはmigrationによってDBへ直接変更を加えなくてもよくなっているが、時間が立つとこのmigration機能自体が厄介な問題を引き起こす可能性がある。
Solution: Never Modify the up Method on a Committed Migration
- migrationはリモート環境で実行したら絶対に変更してはならない。
- すでに配布されているmigrationスクリプトを変更すると、他の開発者とのバッティングを起こすだけでなく、DB自体の破壊につながる。
- そのような自体にならないように、ローカルでよくmigrationを検証する必要がある。
- その為にはdb:migrationだけでなく、db:migration:redoも実施し、問題が無いかを確認したほうが良い。
- db:migration:redoはdownメソッドを実行した後にもう一度migrationを適用する
- ★ネットで調べると、rollbackの代わりに使ってるみたいだが、本当にmigrationを再適用してるのか不明。あとで試す。
- ★これの意図は一度downしてからもう一度upさせることで、双方のスクリプト正しく動くかをローカルdr確認できて安心という意図っぽい。
Solution: Never Use External Code in a Migrationの手前まで読了