💎
[随時更新]Ruby on Railsを体系的に学ぶ
前提
C# 1年、Java 2年 = 3年くらい
2022年6月半ばよりRuby on Railsを始める。
これはなに
Ruby on Railsを使用するプロダクトで働く自分が、自分のために残すメモ。
体系的に学ぶの本体。
各ディレクトリについて詳細な内容はリンクよりどうぞ。(随時更新します)
Ruby on Railsの構造を図にしてみる
ざっくり流れ
-
https://ほげほげ〜
など、リンクを使用者が叩く - routes.rbが呼ばれる
- routes.rbより、controllerと実行するアクションが呼ばれる
- 呼ばれたcontrollerで必要な処理が行われる。DBより必要なデータを取得する場合は該当modelを呼ぶ。
- controllerで取得/作成された結果がViewへ送られる
- Viewでhtml/assetsで設定したCSS・JS・imageを元に画面が作成され、使用者の見ている画面に描画される
※ここで登場していないディレクトリは後述参照
各ディレクトリ/ファイルの解説
routes.rb
- pathとhttpメソッドから実行するcontrollerとアクションを決める対応表
config
- Ruby全体に作用する設定ファイルが格納されたディレクトリ
- brakeman.ignore
- ja.yml
- など
Gemfile
-
configと同じ階層
-
インストールするRubyのgem(ライブラリ)が記述されている
-
bundleコマンドを叩く事でGemfile.lockが作成されインストールされる
-
参照
controller
- 同期処理を行う
- 起動条件がブラウザからのリクエスト(routes.rbの指示のみ)
- CSVなどのファイル処理が行われることもある→詳細
worker
- controllerの兄弟に近い
- Sidekiqなど非同期処理を行う
- perform_asyncを使用し、非同期で誰かが起動してくれる(controllerに限らない)
- CSVなどのファイル処理が行われることもある→詳細
service
- workerから呼ばれる
- ビジネスロジックを書く場所
- 割と好き勝手記述されがち
mailers
- メールを送信する処理を記述する
- controllerでもworkerでもserviceでも呼べる
- メール送信時のviewを作成する必要がある
- 参照
uploader
- 画像を受け取る、上げる場合に通る
- アップロード方法はいろいろなgemを使用できる
- shrine,CarrierWaveなどいろいろある
- ここからS3など外部の画像を保存する場所へ上げたり削除したりする
model
- データベースのテーブルに対応するクラスのこと
- モデルクラスのインスタンスは、1つの行(レコード)を表すオブジェクトになりテーブルの列(カラム)に相当する属性を持つ
- 参照
DB
migrate
- DBの設計図。このディレクトリのファイルを実行することで記述内容がデータベースに反映される
-
rails generate model ~~
によって、日時_ほにゃらら.rbのファイルが作成される
schema.rb
- 最新のDBの状態が反映いる
- DBの構造を示すデータでありDBの完成形となる
View
- htmlを作成するディレクトリ
- 上述のディレクトリの処理の結果、取得した内容を描画するためのhtmlを作る
- 書き方は様々だがrailsに対応したhtmlとしてslimが存在する
- slimとは、rails3以降で対応しているgem
- 他、基本的にはcontrollerで作成したアクション名と対応するファイル名が多い
assets
- CSS・JS・imageなどを置いておくディレクトリ
spec
- ユニットテストを記述するディレクトリ
factories
- spec用のデータを作っている
fixtures
- テストに使うCSVなど
- apps/DB下に作成し、本番データにデフォルトで登録したいデータなどをmasterで保持している場合もある
Discussion