Ruby on Rails チュートリアル習得時の備忘録 (処理の流れ、MVC, Gem, bundler, フォルダ階層・・・)

Railsチュートリアルの冒頭で概念的な説明があまりなくQiitaの情報も断片的で
チュートリアルの理解に苦しんだため、自分なりに整理した資料です。
独学だとよくわからないコマンドを連打するよりざっくりまずは全体感を理解した方が頭の中にすんなり入るはずと思うのは私の気のせいですかね...

〜処理の流れ〜
Browser -> Route(config/routes.rb) <-> Controller <-> Model <-> Database
Browser <- View <-> Controller

〜MVCとは〜
model(s): データベースの操作
view(s): UI処理
controller(s): models, views の連携、
　viewsのディレクトリ名と結びつき、
　defで定義するアクションは
　viewsディレクトリ以下のファイル名と紐付き

rails 主要コマンド一覧: https://railsguides.jp/command_line.html
　※コマンドが短縮されることがある　generate　が　g

〜Gem, Gemを管理するBundler〜
gem（RubyパッケージでRubyGemsとも呼ばれ
GitHub.com, RubyGems.org, BestGems.orgなどからダウンロードできる）:
　・bundle install Gemfileに記載された通りにパッケージがインストールされる
　（依存に問題がある場合、エラーとなることがありbundle updateなどで修正必要）
　　・bundle update パッケージの依存関係を自動更新する (Gemfile.lock更新)
　・gem install xxxxxxxxxx / gem update xxxxxxxxxx 
       gemの単品をインストール/更新する
　　(管理の側面ではGemfileを定義しbundle installの方が良い)
　・gem list インストール済みのパッケージを表示する
 　・gem outdated パッケージの最新チェック

〜初期時フォルダ/ファイル階層〜

（config, initialization配下の一部のファイル挙動は次にまとめられている
https://railsguides.jp/initialization.html ）

├── app *** MVC(モデル、ビュー、コントローラー)、アセット置き場 ***
│   ├── assets *** 画像、javascript、CSS置き場 ***
│   │   ├── config
│   │   │   └── manifest.js
│   │   ├── images
│   │   └── stylesheets
│   │       └── application.css
│   ├── channels
│   │   └── application_cable
│   │       ├── channel.rb
│   │       └── connection.rb
│   ├── controllers *** コントローラーの配置場所 ***
│   │   ├── application_controller.rb
│   │   └── concerns
│   ├── helpers
│   │   └── application_helper.rb
│   ├── javascript *** javascript置き場 ***
│   │   ├── channels
│   │   │   ├── consumer.js
│   │   │   └── index.js
│   │   └── packs
│   │       └── application.js
│   ├── jobs
│   │   └── application_job.rb
│   ├── mailers
│   │   └── application_mailer.rb
│   ├── models *** モデルの配置場所 ***
│   │   ├── application_record.rb
│   │   └── concerns
│   └── views *** ビューの配置場所 ***
│       └── layouts
│           ├── application.html.erb
│           ├── mailer.html.erb
│           └── mailer.text.erb
├── bin 
│   ├── bundle
│   ├── rails
│   ├── rake
│   ├── setup
│   ├── spring
│   └── yarn
├── config *** ルーティングやデータベースなどの”パラメーター”設定 ***
│   ├── application.rb
│   ├── boot.rb
│   ├── cable.yml
│   ├── credentials.yml.enc
│   ├── database.yml
│   ├── environment.rb
│   ├── environments
│   │   ├── development.rb
│   │   ├── production.rb
│   │   └── test.rb
│   ├── initializers
│   │   ├── application_controller_renderer.rb
│   │   ├── assets.rb
│   │   ├── backtrace_silencers.rb
│   │   ├── content_security_policy.rb
│   │   ├── cookies_serializer.rb
│   │   ├── filter_parameter_logging.rb
│   │   ├── inflections.rb
│   │   ├── mime_types.rb
│   │   └── wrap_parameters.rb
│   ├── locales
│   │   └── en.yml
│   ├── master.key
│   ├── puma.rb
│   ├── routes.rb *** コントローラー名、アクション名を指定 ***
│   ├── spring.rb
│   └── storage.yml
├── config.ru
├── db
│   └── seeds.rb
├── Gemfile *** bundlerでのgemインストール時使用、上記参照 ***
├── Gemfile.lock *** bundlerでのgemインストール時使用、上記参照  ***
├── lib *** ライブラリ ***
│   ├── assets *** ライブラリ自身が使用するCSS, JavaScript,  画像置き場 ***
│   └── tasks
├── log *** アプリのログ置き場 ***
├── package.json
├── public *** エラーページなどの置き場 ***
│   ├── 404.html
│   ├── 422.html
│   ├── 500.html
│   ├── apple-touch-icon.png
│   ├── apple-touch-icon-precomposed.png
│   ├── favicon.ico
│   └── robots.txt
├── Rakefile *** rakeコマンドで使用可能なタスク記述 ***
├── README.md *** アプリケーションの説明 ***
├── storage
├── .gitignore *** Gitに無視させたいファイル指定 ***

テスト用
├── test
│   ├── application_system_test_case.rb
│   ├── channels
│   │   └── application_cable
│   │       └── connection_test.rb
│   ├── controllers
│   ├── fixtures
│   │   └── files
│   ├── helpers
│   ├── integration
│   ├── mailers
│   ├── models
│   ├── system
│   └── test_helper.rb

一時システム処理用
├── tmp
│   ├── cache
│   │   ├── assets
│   │   ├── bootsnap-compile-cache
│   │   ├—└── (省略)
│   │   └── bootsnap-load-path-cache
│   ├── pids
│   └── storage

サードパーティープラグインやgem
└── vendor