自分が学んだこと、その学習方法を記載し、学びのテンプレートを作成するサービスです。
url: https://studire.com
ログイン画面に登録不要で見れる閲覧用のテストユーザログインボタンを用意しています。
- Ruby 2.6.2
- Ruby on Rails 5.2.3
- PostgreSQL 11.2
- SCSS
- bootstrap
- jQuery(少量)
- Docker
- docker-compose
- AWS
- Route53
- Certificate Manager
- VPC
- EC2
- ALB
- ECS
- ECR
- RDS for PostgreSQL
- S3
- CloudFront
- CircleCI
- ecs-deploy
ECRにプッシュした本番環境用のイメージを用いて、ECSのEC2インスタンスタイプでデプロイしています。できる限り無料枠で収めたかったためFargateタイプの採用は見送っています。
データベースにはRDS for PostgreSQLを用いています。
画像は全てS3に保存し、CloudFrontでCDN配信を行っています。gemのasset_syncを用いて、app/assets以下の画像も全てCDN配信を行っています。
ALBを用いてhttp通信ををhttpsに全てリダイレクトすることで常時SSL化を実装しています。
Docker環境での開発になります。
また、開発時にはdocker-composeを使用しています。
開発環境では作業ごとにブランチを切って行っています。
また、環境変数の都合でDockerfileを開発環境用のDockerfileと本番環境用のDockerfile.prodに分けています。
circleCIを用いた自動デプロイを採用しています。作業用ブランチがmasterブランチにマージされた時に、Rspecによるテスト、ECRにイメージのpush、ecs-deployで ECSにデプロイ、といった流れでデプロイが行われるようにしています。尚、作業用ブランチをpushした時点ではRspecによるテストまで行われます。
- 記事機能(postモデル)
- 記事機能全般
- いいねに基づいた人気順表示
- Ransackを用いた検索機能(新着順、人気順の両方対応)
- acts-as-taggable-onを用いたタグ機能(新着順、人気順の両方対応)
- rails-autolinkを用いた記事内でのリンク表示
- ユーザ機能(userモデル)
- ユーザ登録・ログイン機能全般(devise)
- Twitterでのログイン機能(omniauth-twitter)
- 一覧表示機能(Ransackでの検索対応)
- プロフィール画像の保存機能(carrierwave,mini-magick,fog-aws)
- コメント機能(commentモデル)
- 投稿、削除、表示
- フォロー機能(relationshipモデル)
- フォロー、アンフォロー機能
- フォロー中のユーザ&フォロワーの表示
- いいね機能(favoriteモデル)
- 一覧機能
- いいねした投稿の検索、タグ絞り込み機能(Ransack, acts-as-taggable-on)
- 管理者機能(rails_admin, cancancan)
- ページネーション機能(kaminari)
- 単体テスト(model spec)
- 統合テスト(system spec)