Rails チュートリアル 1章
まえがき
Railsチュートリアルを取り組むにあたり、復習用として本記事を記述。
基本的な学習事項や仕組みの根幹部分についてまとめる。
筆者の実行環境は以下の通り。
- MacBookPro14
- VSCode(ローカル開発環境)
- bash(ターミナル)
環境構築
Railsチュートリアルにおいてインストールが必要な機能は以下の通り
-
Ruby(3.2.0)
Rubyのインストールのために以下をインストールする-
Homebrew
パッケージ管理システム。あらゆるパッケージやライブラリのインストールおよびアンインストールを一括実施するためのシステム。バージョン変化にも柔軟に対応可能。 -
rbenv
Rubyのバージョンを切り替えるためのツール
-
Homebrew
-
Rails(7.0.0)
Railsインストールのために以下をインストールする-
bundler
RubyのGemと呼ばれるパッケージのインストールおよびアンインストールを管理するシステム。
以上のインストール手順に関しては配布された「環境構築ガイドライン」に従うものとする。
-
bundler
アプリケーションを作成しGitHubに連携するための手順
- Railsでアプリケーションを作成bash
$ rails new アプリの名前 - GitHub側で空のリポジトリを作成する
- 1のリポジトリのURLを取得する
- GitHubのリポジトリとローカルを以下のコードで接続するbash
$git remote add リモートリポジトリ名 URL - ターミナルからファイルをGitにステージング(変更を確定する準備)bash
$ git add . - 変更をGitにコミット(保存)bash
$ git commit -m "Improve My File" - 変更をリモート環境(GitHub)にプッシュ(保存)bash
$ git push origin main
作成したアプリケーションの表示方法
以下をターミナルで実行し、URLを取得後、ブラウザにURLを与えることで表示が可能である。
$ rails server
1章において詰まった部分「デプロイ」
デプロイにあたっては、Railsチュートリアルの記載の通りRenderを用いた。ただ、記載の通りにコードを更新したとして3点詰まる部分があった。
1.Rubyのバージョンが違う
Gemfileにおいて環境構築でインストールしたRubyとチュートリアルで示されているRubyのバージョンが異なることから、実際にインストールした方のバージョンにGemfileの該当部分を書き換える必要がある。
2.Renderにおいて適切なOSがMacと異なった
RenderにおいてはプラットフォームとしてLinuxのみが有効であり、もともと生成されていたGemfile.lockのPLATFORMSに記述されたarm64-darwin-24ではうまくデプロイが通らないようである。したがって、以下のようにGemfile.lockを書き換えた。(前後省略)
PLATFORMS
arm64-darwin-24
+ x86_64-linux
3.bundle周りでしょっちゅうエラーが出た
どうやらデプロイ実行のたびにbundleをインストールしたりなんだりをしなくてはならないのだが、ターミナルであらかじめインストールを実行しても上手くいかなかったことから、デプロイの際に自動で実行すべきコマンド群として以下のファイルを与えた。
#!/usr/bin/env bash
#exit on error
set -o errexit
bundle install
bundle exec rails assets:precompile
bundle exec rails assets:clean
bundle exec rails db:migrate
→デプロイ成功!!
Railsアプリケーションの仕組み(MVC)
Railsアプリケーションは以下3点の要素で成り立っている。
-
model
Rubyのオブジェクトであり、controllerの求めに応じてデータベースとの通信のための機能を提供する。 -
view
実際にユーザに見える部分。 -
controller
ユーザからWebサーバに送られるリクエストの処理を行う。
サイトの要素を保持しており、Modelを呼び出してデータの取得、それらに基づいたビューの描画を行い、完成したWebページをHTMLとしてブラウザに返す。
ルーティング
コントローラとブラウザの間にあるルータがリクエストをコントローラに振り分ける作業をルーティングと呼ぶ。すなわちURLに合わせてどのページを表示するのかを決定する役割を担うのがルーティングという作業である。ルーティングを行うファイルにおいては(ex:config/routes.rb)どのコントローラのどのアクションを実行するかを選ばせるという形を取る。
Discussion