RailsのHotwireでECサイトもどきを作る
プロジェクトのセットアップ
credentialsの設定
config/credentialsを作り、config/master.keyとconfig/master.yml.encをdevelopment.keyとdevelopment.yml.encとリネームして配置する
development.keyは.gitignoreに追加する
credentials関連のコマンド
ファイルの中身を確認
$ bin/rails credentials:show -e development
編集
$ EDITOR="vim" bin/rails credentials:edit -e development
credentialsに定義した値はRails.application.credentials.some_api_keyみたいな感じでアクセスできる
DBのcredentialsの設定だけとりあえずやっておく
database/username/password/host/port/poolをconfig/database.ymlに追加
application.rbの設定
loggerとgeneratorの初期設定
Redisの設定
redisのgemを追加してbundle install。
config/application.rbに:redis_cache_storeを追加
Gemの追加
Deviseで認証機能を作る
とりあえずrails g devise:install
Depending on your application's configuration some manual setup may be requiredと出るので指示に従って各種設定
AdminテーブルとCustomerテーブルを追加
$ rails g devise Admin
$ rails g devise Customer
customersテーブルにnameとstatusを追加。statusはenumで管理する。この辺最近はどう管理するのがベストなんだろ?
controllerとviewもシュッとやってしまう
$ rails g devise:controllers admins
$ rails g devise:controllers customers
$ rails g devise:views admins
$ rails g devise:views customers
追加したparamをdeviseで受け付けるようにする。initializers/devise.rbとかadminとcustomersのdeviseのcontrollerに軽く手を入れる
routesも設定
rootのページをまだ作ってなかったので適当に作る
RubocopのFormattingが遅い
VSCodeでRubocopによるFormattingを使ってるが結構遅いのでストレスになってきた
認証機能+αのUI
tailwind cssのlintや補完を効かせたいのでextensionを入れた
commit前にlintを効かせたい
erbのformatterとlinterとtailwind cssの補完の設定が微妙に噛み合わない。
なので結局辿り着いたのは開発中はtaildwind cssの補完を優先。erbのformattingとlintはcommitする時にovercommitで設定したhooksで検知してもらう。
commitがこけたらrubocop -Aやerblint --lint-all -aをして修正、という流れ。
商品のCRUDを作成
カートの実装
決済の実装
Stripeの準備
サインアップして登録
test環境になってる状態でpublishable_keyとsecret_keyを取得しcredentialsに登録。config/initializer/stripe.rbに情報を追加。
決済処理(Stripe側へ登録)->決済->完了->webhookが返ってくる、という流れ
Stripe CLIでローカルホストをTunnelしてwebhooksを受け取れるようになっていて便利
注文履歴系の機能の実装
顧客情報の機能の実装
その他
N+1クエリの対応
退会機能
メール送信
gmailをsmtpに使う
Sidekiqの設定
デプロイ
TODO
リソース