【自分用】railsチュートリアル 1章

1.1 前提知識
省略

1.2 さっそく動かす

1.2.1 開発環境
AWS導入

Rubyのインストール
rvm(Ruby Version Manager)を使うとさまざまなバージョンのRubyを指定できる
$ rvm get stable
$ rvm install 3.1.2
$ rvm --default use 3.1.2

1.2.2 Railsをインストールする
リスト1.1 インストールに時間のかかるドキュメントをスキップ
$ echo "gem: --no-document" >> ~/.gemrc

リスト1.2 gemコマンドを使ってrailsをインストールする
$ gem install rails -v 7.0.4
-vでバージョン指定 rails -vで確認できる

リスト1.3 bundlerのインストール
$ gem install bundler -v 2.3.14

1.3 最初のアプリケーション
webページに「Hello,world!」の文字列を表示するアプリケーションを作る

リスト1.5 ローカル環境用 environmentディレクトリ作成
$ cd
$ mkdir environment
$ cd environment/

表1.1 主要なUnixコマンド

リスト1.6 rails new実行
$ cd ~/environment
$ rails _7.0.4_ new hello_app -O --skip-bundle
-O Active Recordファイルの生成をスキップ
bundleコマンドをスキップすることで、1.3でインストールしたbundleと互換性が保たれる

rails newで大量のファイルとディレクトリが生成される。
構造が全てのrailsアプリで標準化されているので他の人が書いたコードが読みやすくなる。
これがWebフレームワークの利点

表1.2 ディレクトリ構成の概要

1.3.1 Bundler
Railsアプリ作成後、Bundlerを実行してgemをインストールする
gemfileに記載されているgemを少し変更する
リスト1.7 gemfile
>= 最新のバージョンをインストール
~> 5.0 5.1などのマイナーバージョンがインストールされる。6.0のようなメジャーバージョンアップはされない
一般にマイナーアップデートの方が安全度が高いから主に~>が使われる

リスト1.8 gemfile内容一新

リスト1.9 bundle install(バージョン指定)でgemインストール
一般にはbundleコマンドでバージョン指定はしない

バージョン指定せずインストールして互換性に問題が発生した場合
bundle update
または
rm -f Gemfile.lock
bundle (install)
を実行する

1.3.2 rails server
リスト1.11　rails serverコマンドでrailsアプリが動く
ローカルwebサーバーへの接続を許可する場合には
図1.16config/environments/development.rbに
#Allow connections to local server
config.hosts.clear を追記する

ブラウザのアドレスバーにhttp://localhost:3000/を貼り付ける

演習1
ruvy -v rails -vでインストールされているバージョンを表示できる

1.3.3 Model-View-Controller(MVC)
ブラウザからControllerにリクエスト送信
Viewを生成しHTMLをブラウザに送り返す
Databaseとの通信担当のModelと対話
完成したViewを描画してページをブラウザに返す

1.3.4 Hello,world!
$ ls app/controllers/*_controller.rb 現在あるコントローラを確認できる

コントローラのアクションはコントローラ内で定義
リスト1.12 Applicationコントローラにアクション追加

デフォルトのページの代わりに↑のアクションを使うよう指示
→railsのルーター(router)を編集
ルーターはコントローラとブラウザの間に配置され、ブラウザからのリクエストをコントローラに振り分ける(=ルーティング)役割

今回はデフォルトのページを差し替えるため、ルートのルーティング（ルートURLにアクセスした場合のルーティング）を変更する
リスト1.13 1.14 ルーティングファイル（config/routes.rb）編集
root "controller名#action名" 構成

1.4 Gitによるバージョン管理
バージョン管理下に置くメリット
・プロジェクトのコード履歴を追える
・削除してしまったファイルを復旧（ロールバック）できる

1.4.1 Gitのセットアップ
gitインストール（詳細省略）

リスト1.16 名前とメールアドレス設定
ここで設定した名前とアドレスは一般に公開される
@example.comを使うこともできる

リスト1.17 デフォルトのブランチ名を定義

リスト1.18 エイリアス設定
コマンドを短く入力できるようになる
例）$ git config --global alias.s status →git s = git status

リスト1.19 パスワードを一定期間保持できるようにする

リポジトリセットアップ
リポジトリとは: ソースコードの状態を保存する場所
①アプリのディレクトリに移動して初期化（git init）する

②git add -Aで、プロジェクトの全ファイルをリポジトリに追加
gitはいきなり変更を保存（コミット）せずステージングというコミット待ちの状態になる
現在のステージングの状態を確認するにはgit statusを使う

③git commit ステージングに控えている変更をリポジトリに保存（コミット）する
-mオプションを使うとコミットの内容を説明するためのコミットメッセージを記入できる
git commitで保存したコミットはローカルマシンにしか保存されていない

1.4.2 Gitのメリット
仮にディレクトリを誤操作で削除してしまった場合
$ ls app/controllers/
application_controller.rb  concerns/
$ rm -rf app/controllers/
$ ls app/controllers/
ls: app/controllers/: No such file or directory
 -rf: recursive(ディレクトリ内にある全てのファイルとサブディレクトリを削除する)
force: (削除していいかどうか確認せずに削除する)

この変更はまだステージングに追加されておらず、コミットはされていない
restoreコマンド（と、対象ディレクトリまたはファイル名）を使えば戻せる
$ git restore .

1.4.3 Github
githubにソースコードをアップロードする
メリット
・ソースコードと全ての変更履歴（コミット記録）のバックアップを作るため
・他の開発者との共同開発を簡単に行うため

githubにサインイン
New repository選択
リポジトリ名入力 Privateオプション選択
“Create repository”ボタンをクリック
HTTPSオプション選択
リスト1.20 githubのユーザー名とデフォルトブランチ名設定
求められるパスワードは個人アクセストークンを入力
個人アクセストークンを作成する際は[No expiration]期限なし、適用範囲を repo にする
必ずメモ帳にコピペして保存しておく

1.4.4 ブランチ、編集、コミット、マージ
ブランチとは、基本的にはコード全体のコピー
元のコードにいつでも戻れる状態を維持しながら新しくコードを追加したり、変更したい時に便利

大元のコードがあるリポジトリはmainブランチと呼ばれ、新しいブランチを作るときはswich -cで作成できる
新たなブランチをトピックブランチと呼ぶ
トピックブランチで行った変更はmainブランチに影響しない

git branchでブランチ一覧と現在どのブランチにいるか確認できる

gitの編集
readme(アプリ内)編集して、git statusで確認
commitする -mでメッセージを書く際は現在形かつ命令形

gitのマージ
コミットし終えたらmainブランチにマージする
$ git switch main
$ git merge modify-README
マージ後、トピックブランチを削除
$ git branch -d modify-README
git branch -Dでマージ前のトピックブランチを削除できる

push
pushコマンドでgithubに変更をアップロード
$ git push

1.5 デプロイする
ソースコードを本番環境にアップロードして動かすことをデプロイと呼ぶ
早い段階から継続的にデプロイすることで問題を発見できる

Renderを使う。無料プランでは90日間DBを保存できる
ユーザー登録 Githubアカウントで登録すると便利
web serviceを作成し、githubと連携
リポジトリのアクセスは「All repositories」
アプリ名を設定 build command等はそのままfreeプラン設定
regionは日本から近いsingaporeなど
advanced設定のadd environment variableからrailsアプリを本番環境で動作させるための環境変数rails_master_keyを設定。keyにはrails_master_key、valueにはconfig/master.keyファイルの中身を設定する
これでcreate web serviceをクリックするとデプロイされる

1.6 最後に
やったこと
開発環境のセットアップやインストール、バージョン管理、本番環境へのデプロイなど

1.6.1 本章のまとめ
Ruby on Railsとは、Webアプリケーションを開発するためのフレームワークであり、プログラミング言語Rubyで作られている
クラウドIDEを利用すると、Railsのインストールやアプリケーションの生成、生成したファイルの編集などが簡単にができる。
Railsにはrailsコマンドが用意されていて、rails newで新しいアプリケーションを生成したり、rails serverで開発環境用のサーバーを立ち上げられる。
コントローラのアクションを追加したり、ルーティングを変更するだけで「hello, world」を表示するアプリケーションを作成できた。
データの喪失を防止し、他の開発者と共同作業できるようにするため、Gitによるバージョン管理を導入し、GitHubの非公開リポジトリに保存した。
Gitを導入していたため、アプリケーションを本番環境（Render）にすぐデプロイできた。