rails-dev について
rails-devは、コミュニティが管理するRuby on Rails開発ガイドです。Rails開発者向けに、データベースアクセス、セキュリティ、性能、API、ビュー、バックグラウンドジョブを扱う優先度付きルールをまとめています。
主な機能
- 018カテゴリにわたる優先度付き45ルール
- 02ActiveRecordとデータベースの指針
- 03コントローラーとセキュリティの実践
- 04キャッシュと性能に関するルール
- 05API、ビュー、ジョブの指針
活用シーン
- 01ActiveRecordのクエリパターンのレビュー
- 02Rails APIエンドポイントの構築やリファクタリング
- 03マイグレーションとバックグラウンドジョブの評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill rails-devインストール後、Claude Code で/rails-devを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdapi-avoid-jbuilder-hot-paths.mdapi-error-responses.mdapi-pagination.mdapi-serializers.mdapi-versioning.mdcache-conditional-get.mdcache-counter-cache.mdcache-fragment-caching.mdcache-low-level.mdcache-russian-doll.mdctrl-before-action-scoping.mdctrl-rescue-from.mdctrl-respond-to-format.mdctrl-restful-routes.mdctrl-strong-params.mdctrl-thin-controllers.mddb-add-database-indexes.mddb-avoid-queries-in-loops.mddb-batch-processing.mddb-eager-load-associations.mddb-exists-over-count.mddb-safe-migrations.mddb-select-specific-columns.mddb-use-scopes.mdjob-error-handling.mdjob-idempotent-design.md詳細
コミュニティの Ruby on Rails 開発ベストプラクティス
Ruby on Rails アプリケーションのパフォーマンスと保守性を最適化するための包括的なガイドです。コミュニティによって保守されており、影響度に応じて優先順位付けされた 8 カテゴリー、45 のルールが含まれています。自動リファクタリングやコード生成の指針としてご利用ください。
適用する場面
次の場合に、これらのガイドラインを参照してください。
- Rails のコントローラー、モデル、ビューを新規作成する
- ActiveRecord クエリやデータベースアクセスパターンを最適化する
- キャッシュ戦略(フラグメント、ロシア人形、低レベル)を実装する
- API エンドポイントを構築またはリファクタリングする
- インタラクティブな UI に Turbo Frames と Streams を追加する
- N+1 クエリやセキュリティ上の脆弱性がないかコードをレビューする
- Sidekiq または Active Job でバックグラウンドジョブを設計する
- データベースマイグレーションを作成またはレビューする
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | データベースと ActiveRecord | 重大 | db- |
| 2 | コントローラーとルーティング | 重大 | ctrl- |
| 3 | セキュリティ | 高 | sec- |
| 4 | モデルとビジネスロジック | 高 | model- |
| 5 | キャッシュとパフォーマンス | 高 | cache- |
| 6 | ビューとフロントエンド | 中〜高 | view- |
| 7 | API 設計 | 中 | api- |
| 8 | バックグラウンドジョブと非同期処理 | 低〜中 | job- |
クイックリファレンス
1. データベースと ActiveRecord(重大)
db-eager-load-associations- N+1 クエリをなくすために関連付けを事前読み込みするdb-add-database-indexes- クエリ対象のカラムにデータベースインデックスを追加するdb-select-specific-columns- 必要なカラムのみを選択するdb-batch-processing- 大規模なデータセットの反復処理には find_each を使用するdb-avoid-queries-in-loops- ループ内でのデータベースクエリを避けるdb-use-scopes- モデルに再利用可能なクエリスコープを定義するdb-safe-migrations- 可逆でダウンタイムが発生しないマイグレーションを作成するdb-exists-over-count- 存在確認には count ではなく exists? を使用する
2. コントローラーとルーティング(重大)
ctrl-thin-controllers- モデルやサービスに処理を委譲して、コントローラーを薄く保つctrl-strong-params- マスアサインメントには必ず Strong Parameters を使用するctrl-restful-routes- RESTful なルーティング規約に従うctrl-before-action-scoping- only/except を使って before_action コールバックの適用範囲を限定するctrl-respond-to-format- 複数フォーマットのレスポンスには respond_to を使用するctrl-rescue-from- コントローラーでは rescue_from でエラーを処理する
3. セキュリティ(高)
sec-parameterized-queries- SQL にユーザー入力を決して埋め込まないsec-strong-params-whitelist- 許可する params をホワイトリストで指定し、ブラックリストは使用しないsec-authenticate-before-authorize- すべてのリクエストで、認可の前に必ず認証するsec-csrf-protection- すべてのフォーム送信で CSRF 保護を有効にするsec-scope-queries-to-user- 認可のために、クエリの対象を現在のユーザーに限定する
4. モデルとビジネスロジック(高)
model-validate-at-model-level- モデルレベルでデータを検証するmodel-avoid-callback-side-effects- モデルのコールバックで副作用を避けるmodel-use-service-objects- 複雑なロジックをサービスオブジェクトに切り出すmodel-scope-over-class-methods- クエリを組み立てるには、クラスメソッドではなくスコープを使うmodel-use-enums- 有限状態のフィールドには列挙型を使うmodel-concerns-for-shared-behavior- モデル間で共有する動作にはConcernを使うmodel-query-objects- 複雑なクエリをクエリオブジェクトに切り出す
5. キャッシュとパフォーマンス(高)
cache-fragment-caching- コストの高いビューのパーシャルにはフラグメントキャッシュを使うcache-russian-doll- 入れ子になったコレクションにはロシア人形キャッシュを使うcache-low-level- 計算済みデータにはRails.cache.fetchを使うcache-counter-cache- 関連レコード数にはカウンターキャッシュを使うcache-conditional-get- HTTPキャッシュにはstale?を使った条件付きGETを使う
6. ビューとフロントエンド(中〜高)
view-collection-rendering- ループ内のパーシャルではなく、コレクションのレンダリングを使うview-turbo-frames- ページの一部を更新するにはTurbo Framesを使うview-turbo-streams- リアルタイムのページ変更にはTurbo Streamsを使うview-form-with- form_tagやform_forではなくform_withを使うview-avoid-logic-in-views- 表示ロジックをヘルパーまたはプレゼンターに移す
7. API設計(中)
api-serializers- 一貫性のあるJSONレスポンスにはシリアライザーを使うapi-pagination- コレクションのエンドポイントでは必ずページネーションを行うapi-versioning- APIは最初からバージョン管理するapi-error-responses- 構造化されたエラーレスポンスを返すapi-avoid-jbuilder-hot-paths- トラフィックの多いエンドポイントではJbuilderを避ける
8. バックグラウンドジョブと非同期処理(低〜中)
job-idempotent-design- ジョブを冪等になるよう設計するjob-small-payloads- シリアライズされたオブジェクトではなく、IDをジョブに渡すjob-error-handling- ジョブのリトライとエラー処理を設定するjob-unique-jobs- ジョブの重複登録を防ぐ
使用方法
詳しい説明とコード例については、各リファレンスファイルをお読みください。
- セクションの定義 - カテゴリー構成と影響度レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
| metadata.json | バージョンとリファレンス情報 |
コメント
Markdown 対応