💎

[随時更新]Ruby on Railsを体系的に学ぶ

2022/10/06に公開

前提

C# 1年、Java 2年 = 3年くらい
2022年6月半ばよりRuby on Railsを始める。

これはなに

Ruby on Railsを使用するプロダクトで働く自分が、自分のために残すメモ。
体系的に学ぶの本体。
各ディレクトリについて詳細な内容はリンクよりどうぞ。(随時更新します)

Ruby on Railsの構造を図にしてみる

ざっくり流れ

  1. https://ほげほげ〜など、リンクを使用者が叩く
  2. routes.rbが呼ばれる
  3. routes.rbより、controllerと実行するアクションが呼ばれる
  4. 呼ばれたcontrollerで必要な処理が行われる。DBより必要なデータを取得する場合は該当modelを呼ぶ。
  5. controllerで取得/作成された結果がViewへ送られる
  6. Viewでhtml/assetsで設定したCSS・JS・imageを元に画面が作成され、使用者の見ている画面に描画される
    ※ここで登場していないディレクトリは後述参照

各ディレクトリ/ファイルの解説

routes.rb

  • pathとhttpメソッドから実行するcontrollerとアクションを決める対応表

config

  • Ruby全体に作用する設定ファイルが格納されたディレクトリ
    • brakeman.ignore
    • ja.yml
    • など

Gemfile

controller

  • 同期処理を行う
  • 起動条件がブラウザからのリクエスト(routes.rbの指示のみ)
  • CSVなどのファイル処理が行われることもある→詳細

worker

  • controllerの兄弟に近い
  • Sidekiqなど非同期処理を行う
  • perform_asyncを使用し、非同期で誰かが起動してくれる(controllerに限らない)
  • CSVなどのファイル処理が行われることもある→詳細

service

  • workerから呼ばれる
  • ビジネスロジックを書く場所
  • 割と好き勝手記述されがち

mailers

  • メールを送信する処理を記述する
  • controllerでもworkerでもserviceでも呼べる
  • メール送信時のviewを作成する必要がある
  • 参照

uploader

  • 画像を受け取る、上げる場合に通る
  • アップロード方法はいろいろなgemを使用できる
  • shrine,CarrierWaveなどいろいろある
  • ここからS3など外部の画像を保存する場所へ上げたり削除したりする

model

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