【2023年版】WSL + rbenv + Ruby 3.2.0 + Rails 7 ミニマル構成でプロジェクトを作ってみる

久々に Rails を触ってみようと思って、まっさらな WSL Ubuntu 環境に rbenv を使った Ruby 環境を構築し、Rails 7 の API モードや --minimal モードを試してみた。

$ cat /etc/os-release | grep 'VERSION='
VERSION="20.04.5 LTS (Focal Fossa)"

$ cat /proc/version
Linux version 5.15.79.1-microsoft-standard-WSL2 (oe-user@oe-host) (x86_64-msft-linux-gcc (GCC) 9.3.0, GNU ld (GNU Binutils) 2.34.0.20200220) #1 SMP Wed Nov 23 01:01:46 UTC 2022
$ rbenv --version
rbenv 1.1.1

# Ruby 3.2.0 を使用する
$ rbenv global
3.2.0

$ ruby --version
ruby 3.2.0 (2022-12-25 revision a528908271) [x86_64-linux]

$ gem --version
3.4.1

$ bundle --version
Bundler version 2.4.6
$ gem install rails
$ gem info rails
rails (7.0.4.2)
    Installed at: /home/neo/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0

# 一度シェルを再起動しないと `rails` コマンドが有効にならない・以下の呼び出し方が確実ではある
$ rbenv exec rails

$ rails --version
Ignoring debug-1.7.1 because its extensions are not built. Try: gem pristine debug --version 1.7.1
Ignoring rbs-2.8.2 because its extensions are not built. Try: gem pristine rbs --version 2.8.2
Rails 7.0.4.2

ココから Rails プロジェクトを新規作成してみる。--api オプションを付けると API モードになり、主にフロントエンド周りの資材のインストールがスキップされる。

$ rails new practice-rails --api

他に --minimal というオプションもあった。API モードよりもさらに色々と省かれて、ほぼ ActiveRecord だけで済むようなコンパクトな API サーバを作るにはちょうど良い。

$ rails new practice-rails --minimal --api
$ rails new practice-rails --skip-keeps --skip-action-mailer --skip-action-mailbox --skip-action-text --skip-active-job --skip-active-storage --skip-action-cable --skip-asset-pipeline --skip-javascript --skip-hotwire --skip-jbuilder --skip-test --skip-system-test --skip-bootsnap --minimal --api --skip-bundle

色々試した結果、コンパクトに API サーバを作っていくには、個人的には以下で足りそうだ。

$ rails new practice-rails --minimal --api --skip-keeps --skip-test
$ cd ./practice-rails/

$ bundle info rails
  * rails (7.0.4.2)
        Path: /home/neo/.rbenv/versions/3.2.0/lib/ruby/gems/3.2.0/gems/rails-7.0.4.2

# `rails s` が同義・サーバ起動 `http://localhost:3000/`
$ rails server

とりあえず今回はプロジェクト雛形を作って rails s が起動するところまで。Rails は雛形ファイルが多く、知らない間に初期インストールされている Gems が多いので、rails new のオプションで必要に応じてスキップしていくとスッキリするだろう。