コード整形
docker compose run --rm web bundle exec rubocop -A
docker compose run --rm web bin/htmlbeautifier
binding.pry
docker attach rails_ec-web-1
DBリセット&seed追加
docker compose run --rm web bundle exec rails db:migrate:reset
docker compose run --rm web bundle exec rails db:seed
# rake taskの実行
docker compose run --rm web bundle exec rake promotion_code:generate
Herokuへデプロイ
git push heroku dev_checkout:main
heroku pg:reset -a shrouded-dusk-65815
heroku run rails db:migrate
heroku run rails db:seed
# rake taskの実行
heroku rake promotion_code:generate
Herokuで管理者設定
heroku config:set BASIC_AUTH_USER="admin"
heroku config:set BASIC_AUTH_PASSWORD="pw"
Herokuエラー確認方法
heroku logs --tail
heroku run rails c
Herokuアプリ削除※S3等の設定が再度必要になるため注意
1、setteingからapp削除
2、git remote rm heroku
Dockerで管理者設定
# .envファイルに以下追記
BASIC_AUTH_USER=user
BASIC_AUTH_PASSWORD=password
# docker composeファイルに以下追加
version: '3'
services:
app:
container_name: "app"
build:
context: .
dockerfile: Dockerfile
command: bundle exec rails s -p 3000 -b '0.0.0.0'
ports:
- 3000:3000
external_links:
- db
volumes:
- .:/app
# 追記
env_file:
- .env
pathの確認
http://localhost:3000/rails/info/routes
delete出来ない時(GETメソッドになる時)
docker compose run --rm web bundle exec rake assets:precompile
参考文献
商品一覧機能実装
- DidYouMean::SPELL_CHECKERS~の警告の消去
docker compose exec web bundle update --bundler
- DockerfileでGemfileを読み込んでいる
- volumeに古い情報が保存されいる
- docker runを使うとコンテナが増える
- ERB→Slim変換は完璧ではないためリファクタリングが必要
- faviconの設定
- Herokuのプルリクごとのデプロイ方法
- ブランチ名の変更
- カラム名変更
- ローカルでmigrationできても、どうやらherokuではmigration fileは日付順にmigrateされる
- 【Heroku】アプリを削除する方法
- HerokuDBにseedを追加
- カラムの追加・削除
- seedの追加やテーブルのリセット
- 画像データの表示
- HerokuのDBリセット
- Active StorageとS3の連携
商品詳細機能実装
- リソースベースルーティング後にlink_toを設定するとオブジェクトで詳細画面にいける
- 複数画像の「has_many_attached :images」は配列で格納される
- link_toの書き方①
商品管理機能実装
http://admin@localhost:3000/login
- form_withのsubmit先の変更は引数にurlを指定
<%= form_with model: item, url: admin_items_path do |f| %>
- bootstrapのmarginはmt-2, mx-2など
- dropテーブルした際のrubocopの無効化
# .rubocop.ymlを編集
# Rails/ReversibleMigrationの警告を無効化
Rails/ReversibleMigration:
Enabled: false
カート機能実装
こうではなく
<img class="d-block mx-auto mb-4" src="../assets/images/bootstrap-logo.svg" alt="" width="72" height="57">
こう(アセットヘルパーの使用)
<%= image_tag("bootstrap-logo.svg", alt: "Bootstrap Logo", width: 72, height: 57, class: "d-block mx-auto mb-4") %>
- カート情報の永続化(オプション): セッションは通常、ブラウザを閉じたり、タブを閉じたりすると破棄されるため、カート情報を永続化するためのデータベーステーブルを設計し、カート内のアイテムを永続的に保存する方法を実装することも考えられます。GPT3.5
- importmapをインストールするとコンフリクトになる⚫︎
Add Importmap include tags in application layout
File unchanged! Either the supplied flag value not found or the content has already been inserted! app/views/layouts/application.html.erb
Create application.js module as entrypoint
conflict app/javascript/application.js
Overwrite /myapp/app/javascript/application.js? (enter "h" for help) [Ynaqdhm] n
web:
tty: true
stdin_open: true
- Railsのfind_or_create_byメソッドは、Active Recordを使用してデータベースからレコードを検索し、存在しない場合に新しいレコードを作成します。このメソッドは、特定の条件に一致するレコードが既に存在するかをチェックし、存在する場合はそのレコードを返し、存在しない場合は新しいレコードを作成して返します。
- Fat Controllerを避ける→コントローラーからモデルにロジックを集約する
チェックアウト機能実装
- render メソッド内でファイルパスを指定するとき、Railsは通常 app/views ディレクトリからの相対パスを想定しています。そのため、../bills/new という相対パスは通常の探索場所に該当しません。正しいファイルパスを指定するには、app/views ディレクトリからの相対パスとして指定するか、絶対パスで指定する必要があります。
- ビューではリダイレクトを行うことはできない
- Herokuにpushできない
- DBのロールバック
- mailchacherの設定でつまずいた所→サービス名の指定とコンテナ間通信の設定
- Herokuでのメール設定
- 複数のレコードの保存の際はトランザクションのロールバックの設定をする
- includesメソッドで親子関係のデータリソースをまとめてDBから取得
プロモーションコード機能実装
- Rakeとは、Rubyで書かれたコードをタスクとして作成しておき必要に応じて呼び出し実行する事が出来る機能
- ロジックはビューではなくなるべくコントローラーに書く