tnkzw.sake

HomeSeriesTagsAbout

Rails Tutorialで学べることメモ-第1章-

Series
Railsチュートリアル

Rails Tutorial を改めてしっかりやり直してのメモ第 1 章編

https://railstutorial.jp/chapters/beginning?version=7.0https://railstutorial.jp/chapters/beginning?version=7.0

主要コマンド

rails new application_name

コマンドを実行した場所にapplication_nameパスを切って、Rails アプリケーションの雛形を生成する。
普通にコマンドを実行すると git 管理の設定も入るので、スキップしたい場合は--skip-gitをつける。
他にもオプションがある。
https://railsdoc.com/page/rails_newhttps://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#devcontainerhttps://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)