Ruby on Rails ソースファイルの読む順序について
はじめに
かの有名なRuby on Rails チュートリアルを実施していたのですが、
ソースファイルの数が増えたり、章によって作成、編集するソースファイルの順序が異なったりしており、
どのような順序で読み解くのかが分からなくなってきましたので、整理の意味も込めてまとめます。
MVC(Model-View-Controller)と全体の処理の流れ
前提として、MVC(Model-View-Controller)について触れたいと思います。
Railsでは、MVCというアーキテクチャパターンを採用しています。
- Model:Viewにて表示するためのデータの集積
- View:Modelのデータの表示
- Controller:リクエスト全体のコントロール
上記内容を踏まえて、全体の処理の流れを簡単に説明すると、以下の通りとなります。
- リクエスト内容からどのコントローラに振り分けるかを特定
- 該当コントローラにて処理を実施(Controller)
- 場合によってはデータベースへのアクセス、その他必要なデータに関する処理を実施(Model)
- HTML、JavaScript、JSON等を生成し、ブラウザにて描画(View)
フォルダ構成
Ruby on Rails チュートリアル実施時に作成したディレクトリ構成(抜粋)とそれぞれの役割についてまとめます。
・
├── app
│ ├── controllers (リクエストのコントロール)
│ ├── helpers (各種メソッド)
│ ├── models (データベースへのアクセス、その他必要なデータの集積)
│ └── views (HTML、JavaScript、JSON等の生成)
├── config (各種設定(そのうち、本稿で重要なものはルーティングの設定))
└── db (DBの構成)
ソースファイルの読む順序
上記内容を元に、ソースファイルの読む順序をまとめます。
- リクエストがどのURLかを特定する。(GETであればURLから、POSTであれば app/views 配下のソースから特定する。)
- config/routes.rb を読み、URLのリクエストからコントローラ、アクションを特定する。
- app/controllers/[該当コントローラ]_controller.rb を読み、その中の該当アクションの処理を読む。
- 必要に応じて、app/models/[該当モデル].rb や db/schema.rb 内の該当DBの構成を読む。
- 必要に応じて、app/helpers 内のファイルを読む。
- コントローラのファイルが読み終わったら、app/views/layouts/application.html.erb を読む。
- 必要に応じて、パーシャル(app/views/ 内のアンダースコアから始まるファイル)、
app/views/[該当コントローラ]/[該当アクション].html.erb 、
app/helpers 内のファイルを読む。
まとめ
基本的には、config(routes.rb)、controllers、viewsの順に読む。
controllers、viewsの内容に応じて、models、db、helpersを読む。
もちろん、プロジェクトによって例外はあると思いますので、参考程度に留めておいてください。