スマホを買い換える時に、「バッテリーの持ちがいい」、「サクサク動くものにしたい」自分の望む視点でスマホを直感的に調べるサイトがあればいいなと思い作成しました。
機能 | 概要 [ ]内は管理者のみ |
単体/ 統合テスト |
---|---|---|
製品 項目別ランキング | バッテリー容量, Antutu(SoC性能), 口コミ評価平均値 等の上位順にランキング表示 | - / ○ |
製品検索機能 | 製品一覧から製品名で検索 | - / ○ |
製品比較機能 | 製品同士の性能を表で比較 | - / ○(異常系 WIP) |
製品情報表示 | スペック詳細情報確認・いいね&口コミ数表示 [ 製品登録・登録内容変更・削除 ] |
○ / ○ |
ブランド | ブランドごとの製品一覧表示機能 [ ブランド登録・登録内容変更・削除 ] |
○ / ○ |
CSV インポート機能 | [ CSV形式のファイルからブランドを一括登録 ] | WIP |
ユーザー登録・ログイン機能 | ユーザー登録・登録内容変更・ログイン・削除 | ○ / ○ |
口コミ投稿機能 | 製品ごとの口コミ投稿・投稿内容変更・削除 | ○ / ○ |
口コミいいね機能 | 口コミにいいね(Ajax) | ○ / ○ |
レスポンシブ対応 | - | - / ○ (ユーザー詳細) |
製品詳細ページ(画像込みで投稿) -> 投稿したレビューにいいね(Ajax)
ユーザープロフィール画面から投稿 (製品選択:Ajax)
名称 | 備考 |
---|---|
pagy | ページネーション機能 |
ransack | 検索機能 |
ActiveStorage | ファイル(画像)アップロードツール |
RSpec | System Spec (統合テスト) Model Spec (単体テスト) |
rubocop | 静的コード解析ツール |
capistrano | デプロイツール |
slim | テンプレートエンジン |
Bullet | N + 1 問題検出ツール |
名称 | 備考 | |
---|---|---|
EC2 | App サーバー: Unicorn | - |
Web サーバー: Nginx | - | |
RDS | RDBMS: MySQL | - |
Route 53 | DNSサービス | - |
S3 | ストレージ機能 | - |
ELB (ALB) | 負荷分散機能 | - |
Certificate Manager | SSL証明書 サービス | - |
branch | アクション | |
---|---|---|
local -> remote-branch | push | 自動テスト (RSpec, Rubocop) |
remote-branch -> remote master | merge | 自動テスト (RSpec, Rubocop) |
自動デプロイ(Capistrano) |
当初は Heroku へのデプロイでのリリースを検討していましたが以下の理由で AWS 導入することにしました。
$ git clone https://github.com/Misha434/smar-003.git
$ cd smar-003
$ docker-compose up -d
$ yarn install --check-file
$ bundle install --without production
$ rails db:create
$ rails db:migrate
$ rails db:seed
### unique varidation に引っかかった場合
$ rails db:migrate:reset
$ rails db:migrate:seed
### 開発環境のサーバー起動
$ foreman start
自己プロフィール画面から口コミ投稿する際に、ブランドから製品を絞り込む Ajax処理を実装しました。
Ruby側の変数と、JavaScript側の変数の受渡しの方法がわからず長期間手詰まりを起こしました。jbuilderを利用することで解決しました。
レビュー数:1 の状態から、レビュー全削除をした際にレビュー平均値が nil になってしまうエラーが起きて手詰まりになったことがありました。その際に nilガード・デバックのことを学べました。
評価の星表示部分は自作しています。