Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

【初心者向け】「rails new」で生成されるフォルダ、ファイルをざっくり解説してみた。

はじめに

この記事はDMM WEBCAMP アドベントカレンダー2日目の記事です。

こんにちは。DMM WEBCAMPのメンターをしてます。このアドベントカレンダーのいいだしっぺです。

今回は、Railsを触る上で外せないrails newコマンドで生成されるフォルダ、ファイルについて、解説していきたいと思います。

また、Rails5と6のファイル構成の違いも軽く触れてあります。

対象者

  • Rails触りたての方、触ったことのない方。
  • Railsを使ってるけど、具体的にこのフォルダで何ができるのかイマイチな方。
  • 他言語のMVCフレームワークを触っていて、Railsを理解したい方。

環境

macOS Catalina 10.15.1
Rails: 6.0.1
Ruby: 2.6.5

そもそもrails newとは

rails newコマンドは、Railsを使う上で必要不可欠なファイルを一度に作成してくれるコマンドです。
むしろこれを打たないと始まんないじゃないかってぐらい大事なコマンドです。
実行したらたくさんのファイルを生成したあと、デフォルトのGemfileに記載されているgem 1 のinstallが始まります。(Gemfileについては後述)
また、Rails6だとその後webpacker 2 のインストール(rails webpacker:install)が実行されます。

生成されるフォルダ/ファイルの解説

ここからはrails newを叩いたら、生成されるフォルダ、ファイルの解説をしていきます。
主要なものだけざっくり解説するのでもっと細かい説明はRailsガイドを参照してください。

/app

MVC関連やjs、cssを格納するフォルダなど、Railsの中枢に関わるフォルダ。
rails5だとassetsの中に/javascriptsファイルが入っていたが、rails6だとappの中に入っている。

/assets

/images(画像)や/stylesheets(CSS)など、ページを装飾するものをまとめたフォルダ。

/controller

MVCのCの部分。人間で言うところの「脳」であるコントローラーをまとめたフォルダ。
rails g controller hogesのコマンドを叩くと、このフォルダにhoges_controller.rbが作成される。

/helper

helperとは、主にviewをシンプルにするために、ちょっとした処理をやりたいときに使うメソッド3
それらを書くファイルをまとめたフォルダ。
コントローラーが作られると同時にコントローラー名の名前のファイルが作成される。

/models

MVCのMの部分。Railsでは主にデータベースとのやりとりや制約などを記述するモデルをまとめたフォルダ。
使用しているデータベースのテーブル毎にモデルが用意される。
rails g model Hogeのコマンドを叩くと、このフォルダにHoge.rbが作成される。

/views

MVCのVの部分。ページの見た目を作るためのERBファイルをまとめたフォルダ。
コントローラーが作られると同時にコントローラー名の名前のフォルダが作成される。
rails g controller hoges index とコマンドを打てば該当のファイルにindex.html.erbが作成される。

/bin

サーバを起動したり、テストをしたり、アプリケーションを管理する様々なスクリプトファイルをまとめるフォルダ。4
各プロジェクトのRailsのバージョンが違っていた場合、bin/rails sと/binを指定してコマンド実行するとそのバージョンでのコマンドで実行されるのでおすすめ。

/config

RailsやルーティングやDBなど、Railsの様々な設定ファイルをまとめてあるフォルダ。
Rails6ではwebpack関連の設定ファイルもある。

database.yml

データベース設定ファイル。YAML5というデータ形式で書かれている。
開発、テスト、本番環境別のDBサーバやパスワード等を記述する。

routes.rb

取得したURLを適切なコントローラー内のアクションなどに割り当てるためのルーティングファイル。
Routing Errorの原因はだいたいここ。
rails routesで割り当てているルーティングの一覧が見れる。
resourceがとっても便利。(RESTfulなリソースにしてくれる。)6

/db

データベース関連の情報をまとめたフォルダ。
デフォルトだとseeds.rbしかない。

/migrate

モデル作成時やrails g migration hogehogeでマイグレーションファイルがこのファイルの直下に作成される。
rails db:migrateを実行すると生成したテーブルやカラムなどがマイグレーションファイルを参考にデータベースへ内容が保存される。

schema.rb

rails db:migrate実行後に生成される、実行結果(実際にデータベースに保存されているテーブル等)が反映されているファイル。
デフォルトだとここを弄ってもテーブルの内容はかわらない。

seeds.rb

既存のテーブルにデータを格納するために設定するファイル。
記述し、rails db:seedを実行するとデータベースにデータが格納される。7

/lib

自作のモジュール8を置く場所。
ここにモジュールを置いて、requireで呼び出す。9

/log

いわゆるログファイル。デフォルトでは中身はない。
logger.debugを使うことで、log/development.logにlogを出力できる。

/public

404.html500.htmlなどRailsを使用しない静的ページや画像を格納する場所。
デプロイ時とかでお世話になるかも。

/storage

Active Storage等を使用した際にlocalでデフォルトで投稿されたファイルが保存される場所。10
デフォルトでは中身はない。

/test

作ったアプリケーションが正しく動作するのかという確認するファイルをまとめたフォルダ。
テストを行うことで正しい動作を保証し、品質の高いアプリケーションを仕上げる事につながる。
コントローラーやモデルが作られると同時にコントローラー、モデル名の名前のファイルが作成される。
Minitestなどを使いテストをしていくのが主流。Rspecは/specが別途作られる。

/tmp

一時ファイルを保存するためのファイルをまとめたフォルダ。

/vendor

vendorは自分が開発しているものではないサードパーティのライブラリ(jsフレームワークやcssフレームワークなど)を格納する場所。
デフォルトでは中身はない。
ここにライブラリを置いて、requireで呼び出す。11

Gemfile

現在のアプリケーションで使うgemをまとめているファイル。
このファイルに追加したいgemを記入し、bundle installを実行するとgemがinstallされる。

Gemfile.lock

Gemfileを元に依存関係にあるgemのバージョンと取得先が記録される。
実際にインストールしたgemのリストという認識。
bundle installbundle updateで更新される。

おわりに

この記事書くだけでもかなり勉強になりました。アウトプットはやはりよい。
かなりざっくりしていて、全てのファイルは紹介しきれていませんが、ふんわりこんな内容なんだと掴んでいただければ幸いです。
間違っていたりしたら報告していただけると泣いて喜びます。
私の他にもDMM WEBCAMPのメンターや社員さんが記事を書かれているので、よければご覧になってください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What are the problem?