1. 概要
- railsのディレクトリ構成や基本的なところから知りたかった
- railsのディレクトリ構成、railsコマンド、コントローラーやモデルについて調べたことをまとめた
参考資料:Railsの基礎知識
2. 設計哲学
- 設定より規約【Conversion over Configuration(CoC)】1
慣例に従わない時にのみそれに沿ったコードを書く必要があるということ
テーブルのマイグレーションファイルを作成するときなども命名規則が決まっており、これの通りに作成することでRailsがうまく処理してくれるので、基本的には規約に沿えばいい
- 同じ作業を繰り返さない【Don't Repeat Yourself(DRY)】2
3. ディレクトリ構成
デフォルトのディレクトリからAPIモードに必要ないディレクトリ等は端折っている
参考:ディレクトリ構成
/
├ /app アプリケーション用のファイルを置く
│ ├ /assets アプリケーション自身が保有するソースファイルを置く
│ │ ├ /config アセットのマニフェストを置く
│ │ └ /images 画像を置く
│ ├ /controllers コントローラー
│ ├ /jobs ジョブを置く
│ ├ /lib ヘルパー以外で自動読み込みするアプリケーション用のモジュールを置く
│ ├ /mailers メーラーを置く
│ └ /models モデルを置く
├ /bin Railsが生成するプロジェクト用のコマンドを置く
├ /bundle_bin Bundlerのスタブを置く
├ /scripts プロジェクトで使用するシェルスクリプトを置く
├ /build タスクの生成物を置く
├ /config 設定ファイルを置く
├ /db データベース関連のファイルを置く
├ /lib 自動読込しないアプリケーション用のモジュールを置く
├ /share ライブラリのモジュールを置く
├ /test テスト用のファイルを置く RSpecを使用するなら使用しないディレクトリ?
├ /log ログファイルを置く
├ /tmp 一時ファイルを置く
├ /vendor サードパーティーのファイルを置く
│ ├ /assets サードパーティーのアセット
│ ├ /bundle Bundler
がgem
をインストールする場所
│ └ /patches gem
用のパッチ
├ /plugins プロジェクト内で使用するRailsプラグイン
├ /node_modules npmパッケージをインストールする場所
└ /patches patch-pachage
用のパッチを置く
以下ディレクトリの説明の追加
3.1. /app
アプリケーション用のファイルを置く
サブディレクトリもある
3.1.1. /app/assets
アプリケーション自身が保有するソースファイルを置く
ここ以外にも/assetsファイルがあるが、それとの違いは
- lib/assets
1つのアプリケーションの範疇に収まらないライブラリのコードや、複数のアプリケーションで共有されるライブラリのコードを置く場所3
- vendor/assets
JavaScriptプラグインやCSSフレームワークなど、外部の団体などによって所有されているアセットの置き場所3
参考:Rails5 app/assets、lib/asses、vendor/assetsの使い分け
また、assetsのサブディレクトリもある
3.1.1.1. /app/assets/config
プリコンパイルするアセットを指定するためのmanifest.js
を置く
3.1.1.2. /app/assets/images
画像を置くディレクトリ
.keep
という空のファイルがある
Gitが空のディレクトリをバージョン管理の管理下に置かない特性からこのファイルが存在する
3.1.2. /app/controllers
コントローラーを置くディレクトリ
サブディレクトリもある
3.1.2.1. /app/controllers/concerns
複数のコントローラーで使用する共通のメソッドを記述するファイルを置く
複数のコントローラーで使用されるメソッドをそれぞれで書いていると冗長なので、ここにまとめることがある
3.1.3. /app/models
モデルを置くディレクトリ
サブディレクトリもある
3.1.3.1. concerns
複数のモデルで使用する共通のメソッドを記述するファイルを置く
複数のモデルで使用されるメソッドをそれぞれで書いていると冗長なので、ここにまとめることがある
3.2. /bin
Railsプロジェクト毎に用意されているスクリプトを実行するためのファイルが置かれる
rails/command
に定義されているバイナリを実行するためのエイリアスもこのファイルに登録されていたりする
参考:Railsファイル辞典(binディレクトリ編)
3.3. /scripts
Rails runner
とかを使ってゴニョニョするために使うっぽい(今のところ使わなそうなのでその時になって調べる)
この辺を後で読んでみる
3.4. /config
様々な設定ファイルを置く
詳細は以下
3.5. /db
開発環境とテスト環境のデータベースファイルが作成されるディレクトリ
また、シードデータ投入用のファイルもここに作成される
別記事で以下で調べた内容をまとめる予定
4. railsコマンドについて
5. コントローラー
6. モデル
-
開発者の決定すべきことを減少させ、単純にするが柔軟性は失わせないソフトウェア設計パラダイムのこと 参考:Wikipedia/設定より規約 ↩
-
重複を防ぐ考え方。追求しすぎると疎結合の原則が破られることがままあるので兼ね合いを見ることが必要 参考:Wikipedia/DRY ↩