Rails Tutorialで学べることメモ-第1章-
Rails Tutorial を改めてしっかりやり直してのメモ第 1 章編
https://railstutorial.jp/chapters/beginning?version=7.0
主要コマンド
rails new application_name
コマンドを実行した場所にapplication_name
パスを切って、Rails アプリケーションの雛形を生成する。
普通にコマンドを実行すると git 管理の設定も入るので、スキップしたい場合は--skip-git
をつける。
他にもオプションがある。
https://railsdoc.com/page/rails_new
bundle install
Gemfile に記載のある gem をインストールする。
rails server
Rails のアプリケーションサーバーを起動する。
Docker で動かしている場合は、rails s -b 0.0.0.0
のように b オプションをつけて実行しないとアクセスできない。
知識
環境構築
GitHub Codespaces を用いた簡単な環境構築が紹介されている。
今回は自前で Docker ファイルを用意して、各章の Rails アプリケーションをenvironments
というパス以下に作成することとした。
自前で準備したのに、しっかり読むとコンテナでの開発環境もチュートリアル内で準備があった。とほほhttps://railstutorial.jp/help#devcontainer
Gemfile
bundler
gem を用いて gem をバージョン指定して管理できる。
バージョン制御の記述方法に種類がある。
gem "gem_name"
- gem の名前を指定するだけの場合、最新バージョンが入る
gem "gem_name", "1.0.0"
- バージョン固定でインストールする。
gem "gem_name", ">= 1.0.0"
- バージョンの下限を指定する。最新が
3.23
のように進んでいても1.0.0
以上をみたすので最新が入る - つまり、メジャーバージョンアップデートが入っていても問答無用
- バージョンの下限を指定する。最新が
gem "gem_name", "~> 1.0.0"
- メジャーバージョンを指定する。
- マイナーバージョンのアップデートは受け入れるが、
2.0.0
のように上がるとアップデートしない。
デプロイ
Render を用いたデプロイ方法の紹介。
初めて使ったが、Vercel や Cloudflare と同じように GitHub のアカウントを連携して、ぽちぽち設定すると簡単にデプロイをしてくれて体験が良い。
config/master.key
の値を環境変数RAILS_MASTER_KEY
に設定すると案内があるが、細かなことは触れられていない。
要点をまとめると
- Rails アプリケーションで利用する機密情報を管理するファイルが
config/credentials.yml.enc
config/credentials.yml.enc
は暗号化されている- 編集するには
rails credentials:edit
コマンドの入力が必要 config/credentials.yml.enc
を復号するための秘密鍵がconfig/master.key
- だからこれは git 管理されない
細かな知識
- 基本の Unix コマンド
- MVC(Model-View-Controller)アーキテクチャの基本
- Git によるバージョン管理
まとめ
rails new して簡単なアクションの実装までまずは触ってみる感じの章。
Git の解説も結構多く、開発者に必要な知識全体をカバーする方針を感じる。
Render のデプロイで割とハマってbundle lock --add-platform x86_64-linux
やらなんやらしたけど、bundle upgrade
できていないのが原因だった。
エラーログを冷静に見ると書いてたんですけどね。なぜかその瞬間だけ盲目になっている。rails-tutorial-chap3
Downloading net-pop-0.1.2 revealed dependencies not in the API or the lockfile
(net-protocol (>= 0)).
Running bundle update net-pop should fix the problem.
bundler: failed to load command: rake (/opt/render/project/.gems/bin/rake)
/usr/local/lib/ruby/3.3.0/bundler/definition.rb:594:in materialize': Could not find rails-7.0.4.3, sassc-rails-2.1.2,...
(Bundler::GemNotFound)