【2023年版】WSL + rbenv + Ruby 3.2.0 + Rails 7 ミニマル構成でプロジェクトを作ってみる
久々に Rails を触ってみようと思って、まっさらな WSL Ubuntu 環境に rbenv を使った Ruby 環境を構築し、Rails 7 の API モードや --minimal
モードを試してみた。
- 前提環境 : WSL Ubuntu
$ 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 をインストールし
~/.bashrc
を設定する
$ 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
- Rails 7.0.4.2 をインストールする
$ 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
- 参考 : Minimal Rails · Ruby on Rails Install Guide
--minimal
はaction_cable, action_mailbox, action_mailer, action_text, active_job, active_storage, bootsnap, dev_gems, javascript, jbuilder, system_test, hotwire
が省かれる模様
色々試した結果、コンパクトに 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
- 参考 : ruby - Where does bundler store gems? - Stack Overflow
- Bundler が RubyGems をどこに保管しているかを調べるには
bundle info
で Path を見れば良い
- Bundler が RubyGems をどこに保管しているかを調べるには
とりあえず今回はプロジェクト雛形を作って rails s
が起動するところまで。Rails は雛形ファイルが多く、知らない間に初期インストールされている Gems が多いので、rails new
のオプションで必要に応じてスキップしていくとスッキリするだろう。