ディレクトリ構造
Railsのディレクトリ構造に迷いそうだったので、自分なりにまとめました。
- .github: GitHubワークフロー(自動アクション)
- app: アプリケーションの主要なコード
- assets: JavaScript, CSS, 画像などの静的なアセット
- controllers: [C] コントローラー #
- helpers: ビューで使えるヘルパー
- jobs: Active Job(バックグラウンドで実行するジョブ)
- mailers: Action Mailer(アプリからのメール送信)
- models: [M] モデル #
- views: [V] ビュー #
- bin: railsコマンドなどのスクリプト
- config: アプリケーションの設定ファイル
- environments: 環境(development, production, test)ごとの設定ファイル
- initializers: 初期化設定ファイル
- locales: ロケールファイル
- routes.rb: ルーティングの設定ファイル #
- db: データベース関連
- migrate: マイグレーションファイル [time_stamps_XXX.rb] #
- schema.rb: データベーススキーマ(データベース構造の設計図)
- seeds.rb: データベースにサンプルデータを作る
- lib: ライブラリ用
- log: 過去のサーバーを起動した時のログが見れる
- public: 404エラーやメンテナンスページなど、コントローラーを作るまでもない静的なページなどを置いておける
- storage: ローカル環境にてActive Storageでアップロードしたファイルを格納する場所
- test: Rails標準のMinitestのテストコードを保存
- tmp: 一時ファイル(キャッシュなど)
- vendor: 外部のライブラリやプラグインを保存
- config.ru: Rackサーバー(Pumaなどの、RubyアプリとWebサーバーの仲介役)の設定ファイル
- Gemfile: インストールするGemのリスト #
- Gemfile.lock: Gemのバージョンが記録される
- README.md: プロジェクトの説明文書
- Rakefile: RakeはRuby版のMake。プロジェクトのタスク(処理のひとまとめ)を設定できる
探す時のポイント
- MVCはすべてappディレクトリ下にある
- ルーティング設定ファイルはconfigディレクトリ下のroutes.rbである
- マイグレーションファイルは、データベース関連なのでdbディレクトリ下にある
- Gemfileはプロジェクトディレクトリ直下にある
気付いたこと
- 初期に生成されるディレクトリは、Railsのデフォルトのフレームワークや機能をもとにしたものが多い
- 何気なく使っているrailsコマンドはbin(バイナリ)ディレクトリ下に定義されているため、
bin/rails
と書いてもrailsコマンドが実行できる
参考