# Ruby on Rails

## 概要

Ruby on Railsは、Model-View-Controller（MVC）パターンに基づいたフルスタックWebアプリケーションフレームワークです。「設定より規約（Convention over Configuration）」の原則に従い、開発者の生産性と持続可能な開発を重視して設計されています。

## 主な機能

| 機能カテゴリ | 説明 |
| --- | --- |
| Active Record | データベースバックエンドのORMレイヤー。マイグレーション、アソシエーション、バリデーション、クエリインターフェースを提供 |
| Action Pack | HTTPリクエストのルーティングとコントローラーレスポンスの処理 |
| Action View | テンプレートエンジン。ERB、パーシャル、レイアウト、フォームヘルパーをサポート |
| Active Model | モデルの振る舞いを定義するためのモジュール群。Active Record以外のモデルでも利用可能 |
| Active Support | Ruby標準ライブラリの拡張とユーティリティクラス群 |
| Action Mailer | メール送信機能 |
| Action Mailbox | 受信メールの処理機能 |
| Active Job | バックグラウンドジョブ処理フレームワーク |
| Action Cable | WebSocketsによるリアルタイム通信 |
| Active Storage | クラウドストレージ（AWS S3、Google Cloud Storage等）へのファイルアップロード |
| Action Text | リッチテキストコンテンツの管理 |
| Railties | Railsアプリケーションの起動とジェネレーター |

## 技術スタック

### コア

- フレームワーク: Ruby on Rails 8.2.0.alpha
- 言語: Ruby (>= 3.3.0)
- 対応データベース: SQLite3、PostgreSQL、MySQL、Trilogy
- Webサーバー: Rack 3.x互換（Puma推奨）

### 主要ライブラリ

- nokogiri: XMLおよびHTMLパーサー
- bcrypt / argon2: セキュアパスワードハッシュ
- redis: Action CableおよびキャッシュのためのRedisクライアント
- aws-sdk-s3 / google-cloud-storage: クラウドストレージ連携
- capybara / selenium-webdriver: システムテスト
- stimulus-rails / turbo-rails: モダンJavaScript統合

## ディレクトリ構成

```
rails-main/
├── actioncable/         # WebSockets統合
├── actionmailbox/       # 受信メール処理
├── actionmailer/        # メール送信
├── actionpack/          # コントローラーとルーティング
├── actiontext/          # リッチテキストコンテンツ
├── actionview/          # ビューテンプレート
├── activejob/           # バックグラウンドジョブ
├── activemodel/         # モデル抽象化
├── activerecord/        # ORM
├── activestorage/       # ファイルアップロード
├── activesupport/       # Rubyコア拡張
├── railties/            # Railsコアとジェネレーター
├── guides/              # Railsガイドのソース
├── tools/               # 開発ツール
├── tasks/               # Rakeタスク
├── Gemfile              # 依存関係定義
├── rails.gemspec        # Gem仕様
└── RAILS_VERSION        # バージョンファイル
```

## セットアップ

### 必要条件

- Ruby >= 3.3.0
- Bundler >= 1.15.0
- データベース（SQLite3、PostgreSQL、MySQL/MariaDB のいずれか）

### インストール手順

1. Railsをインストール:

```bash
gem install rails
```

2. 新しいRailsアプリケーションを作成:

```bash
rails new myapp
cd myapp
```

3. 開発サーバーを起動:

```bash
bin/rails server
```

4. ブラウザで `http://localhost:3000` にアクセス

### 開発環境でのRailsフレームワーク自体のセットアップ

```bash
# リポジトリをクローン
git clone https://github.com/rails/rails.git
cd rails

# 依存関係をインストール
bundle install

# データベースを作成（Active Recordテスト用）
cd activerecord
bundle exec rake db:create
```

## 開発

### Lint / Formatter

```bash
# RuboCopによる静的解析
bundle exec rubocop

# 自動修正
bundle exec rubocop -A
```

### テスト実行

```bash
# 全テスト実行
bundle exec rake test

# 分離テスト実行
bundle exec rake test:isolated

# 特定フレームワークのテスト
bundle exec rake activerecord:test
bundle exec rake actionpack:test

# 特定アダプタでのActive Recordテスト
bundle exec rake activerecord:postgresql:test
bundle exec rake activerecord:mysql2:test
bundle exec rake activerecord:sqlite3:test

# Active Jobの統合テスト
bundle exec rake activejob:integration
```

### ドキュメント生成

```bash
# APIドキュメント生成
bundle exec rake rdoc

# プレビュー用ドキュメント生成
bundle exec rake preview_docs
```
