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)