メモ。
結構もやもやしたから。
ミスcommitをpushしたときのワークツリーの動き
gitでpushする⇒デプロイする⇒ミスった。
デプロイの履歴
deploy A(正しい)
deploy B(間違えた)←シンボリックリンク
ワークツリー
commit A1(deploy Aのcommit)
commit A2(deploy Aのcommit)
commit B1(deploy Bのcommit)
戻す⇒デプロイは変化するが、ワークツリーは変化しない。
rollback
bundle exec cap [環境] deploy:rollback
デプロイの履歴
deploy A(正しい)←シンボリックリンク
deploy B(間違えた)
ワークツリー
commit A1(deploy Aのcommit)
commit A2(deploy Aのcommit)
commit B1(deploy Bのcommit)
直した⇒ワークツリーにcommitが追加。
ワークツリー
commit A1(deploy Aのcommit)
commit A2(deploy Aのcommit)
commit B1(deploy Bのcommit)
commit C1(deploy Cのcommit)
pushもした(コマンド省略)
updateと再起動
bundle exec cap [環境] deploy:update
bundle exec cap [環境] deploy:graceful_restart
※個人的な都合でこうしてる。再起動を気にしなければdeployのみで可。
デプロイの履歴
deploy A(正しい)
deploy B(間違えた)
deploy C(修正した)←シンボリックリンク
ワークツリー
commit A1(deploy Aのcommit)
commit A2(deploy Aのcommit)
commit B1(deploy Bのcommit)
commit C1(deploy Cのcommit)
gitのワークツリーがコピーされるため、修正後は気にせず最新のワークツリーをデプロイしてしまえばよい。
rollbackしたときテーブル修正があるか
もう一つ。
deploy:migrateとかやってた場合、deploy:rollbackしてもDBは戻らない。
そのときのやり方メモ。(こっちは実際にやってないのでコマンドなし)
テーブルに修正がない場合
・気にせずrollbackしてコード修正。
・気にせずdeployして反映。
テーブルに修正がある場合
・rollbackする。
・作ったテーブルをdropするマイグレーションファイルを作成。
・再度deploy:migrateをして、テーブルをdropする。
・コード修正。
・普通にdeployして反映。