Rails 8 を使用したイベント管理・参加申込みシステムです。ユーザーがイベントを作成・管理し、他のユーザーがそのイベントに参加申込みできる Web アプリケーションです。
- イベント作成・編集・削除: 認証済みユーザーがイベントを管理
- イベント詳細表示: 誰でもイベント詳細を閲覧可能
- 画像アップロード: イベントに画像を添付(Active Storage 使用)
- 検索機能: キーワードによるイベント検索(Searchkick + OpenSearch)
- ページネーション: イベント一覧のページ分割表示
- GitHub OAuth 認証: GitHub アカウントでのログイン
- ユーザープロフィール: 名前、アバター画像の管理
- アカウント削除: 未終了イベントがない場合のみ削除可能
- イベント参加申込み: 認証済みユーザーがイベントに参加表明
- 参加キャンセル: 参加申込みの取り消し
- 参加者一覧: イベントの参加者とコメントを表示
- コメント機能: 参加時にコメントを添付可能
- Ruby: 3.4.5
- Rails: 8.0.0
- データベース: MySQL 8.0
- 認証: OmniAuth (GitHub)
- 検索: Searchkick + OpenSearch
- バックグラウンドジョブ: Sidekiq
- ファイルアップロード: Active Storage
- テンプレートエンジン: Hamlit
- JavaScript: Stimulus Rails, Turbo Rails
- CSS: Bootstrap 5.3.7, SCSS
- バンドラー: Webpack
- その他: jQuery, Vue.js 3
- コンテナ: Docker, Docker Compose
- 開発支援: dip (Docker Interaction Process)
- テスト: RSpec, Capybara (Playwright driver)
- コード品質: RuboCop, Bullet (N+1 クエリ検出)
- カバレッジ: SimpleCov
- users: ユーザー情報(GitHub OAuth)
- events: イベント情報(名前、場所、内容、開始/終了時間)
- tickets: 参加申込み情報(ユーザーとイベントの関連)
- activestorage*: ファイルアップロード関連
- User has_many Events (as owner)
- User has_many Tickets
- Event has_many Tickets
- Event has_one_attached :image
- Docker & Docker Compose
- MySQL 8.0 (ローカル開発の場合)
- MySQL 設定 (ローカル開発の場合)
brew install [email protected]
bundle config --local build.mysql2 "--with-mysql-dir=$(brew --prefix [email protected])"
- アプリケーション起動
# Dockerを使用する場合
docker-compose up
# dipを使用する場合
dip bundle
dip rails new .
dip up
- データベース初期化
dip rails db:create db:migrate
dip rails searchkick:reindex CLASS=Event
MYSQL_HOST
: MySQL ホスト (デフォルト: localhost)MYSQL_PORT
: MySQL ポート (デフォルト: 3306)- GitHub OAuth 設定が必要
# テスト実行
dip rspec
# カバレッジ確認
open coverage/index.html
http://localhost:3000/rails/info/routes
通常の Dockerfile
docker build -t myrailsapp .
docker run -p 3000:3000 myrailsapp
BuildKit 使用
DOCKER_BUILDKIT=1 docker build -t myrailsapp -f Dockerfile-buildkit .
docker run -p 3000:3000 myrailsapp
- 初回起動時に
Event.reindex
の実行が必要 Searchkick::MissingIndexError
が発生する場合は以下を実行:
dip rails searchkick:reindex CLASS=Event
- 他のユーザが作成したイベントに参加できない問題の修正
- Sidekiq の動作確認と修正
- プロダクション環境での設定最適化
このプロジェクトは MIT ライセンスの下で公開されています。