家計簿アプリを作る #92:Cloudflare Pages への再デプロイ

家計簿アプリ作成シリーズの第92回です。削除時にレシート画像もR2から消す対応がまとまったので、Cloudflare Pagesへ再デプロイします。

デプロイ手順

今回はスキーマの変更が無いので、マイグレーションは不要でした。コードをpushして、Cloudflare側でビルドとデプロイが走るのを待つだけです。

本番環境での動作確認

R2からファイルが消えたかどうかは画面では分かりません。削除する前にreceipt_keyを控えておき、削除後にそのキーのファイルが取得できないことを確認しました。

npx wrangler d1 execute kakeibo-app-db --remote --command "SELECT id, receipt_key FROM transactions WHERE receipt_key != '' AND user_id = '対象のユーザーID'"
npx wrangler r2 object get kakeibo-app-uploads/receipts/【控えたUUID】 --remote --file ./check.png

ファイルが残っていればダウンロードされ、消えていれば見つからない旨のエラーになります。

この方法で、3つの削除経路すべてを確認しました。

  • 取引の単体削除:レシート付きの取引を1件登録して削除
  • 一括削除:レシート付きの取引を2件以上登録し、チェックボックスで選んで一括削除
  • アカウント削除:確認用アカウントでレシート付きの取引を複数登録し、アカウントを削除

一括削除については、ローカルで.get()と.all()の取り違えによるバグを出した箇所なので、本番でも必ず複数件で確認しました。いずれも問題なくR2からファイルが消えていました。

後片付け

確認のためにwrangler r2 object getでダウンロードしたファイルが、プロジェクト直下に残っていました。テスト用のレシート画像をそのままコミットしてしまわないよう、削除してからpushしています。git statusに見覚えのないファイルが並んでいたら、コミット前に必ず中身を確かめるようにしたいところです。

まとめ

R2の確認は画面からできないので、「削除前にキーを控える」という手順が要になります。地味ですが、この一手間が無いと「消えたつもり」のまま気付けません。お題91で一括削除のバグに気付けたのも、複数件で試して実際にR2を覗いたからでした。

← トップページに戻る