railsのバージョン7でプロジェクトをセットアップする一連の流れをメモ。

どのようにオプションを設定してプロジェクトを作っていくか?

新しい仕組みとしてimportmap-railsがあるけれど、これを書いている時点ではiOSのSafariがサポートしていないので使わない方が無難な印象。

あと、ReactやVueとかのコード資産を使い回ししたいときはimportmap-railsを使えない。

Rails 7.0 で標準になった importmap-rails とは何なのか?

自分の場合は今のところ、以下の設定で開発を始めていくのがよさそうだ。

$ cd {アプリのディレクトリへ}

# Rubyバージョンを指定
$ echo 3.1.2 > .ruby-version

# Gemfileを初期化する
$ bundle init

# railsをinstallする(Gemfile中のgem "rails"をコメントを解除して実行)
$ bundle install

# rails初期化
$ rails new . --css=sass --javascript=esbuild --skip-jbuilder --skip-action-mailbox --skip-action-mailer --skip-test --skip-active-storage --skip-action-text

# アプリ起動
$ bin/dev

rails newのときのオプションはこんな感じ。skipしたものはあとで必要になったら追加すればOK

  • --css=sass sassを使う
  • --javascript=esbuild esbuildでjsをビルドする。importmapsが使えるようになれば不要
  • --skip-jbuilder jbuilderは使わない。APIが必要になった場合、素でjson出力するかactivemodel_serializerを使う
  • --skip-action-mailbox ActionMailbox 使わない railsアプリがメール受信をしたい、となったら使う
  • --skip-action-mailer ActionMailer とりあえず、使わない。メール送信が必要な場合は使う
  • --skip-test rspecを使うのでこっちは使わない。
  • --skip-active-storage ActiveStorage とりあえず、使わない。ファイルアップロードしたい、となったら使う
  • --skip-action-text ActionText 使わない。リッチテキストエディタを使いたいことがあれば使うことを検討するかもしれない

jsやcssをビルドするときの設定はpackage.jsonに書いてある。

例えば、cssの出力ファイルを複数に分けたい、なんてときはscripts配下のbuild:cssのところを調整する、みたいな感じ。

{
  "name": "app",
  "private": "true",
  "dependencies": {
    "@hotwired/stimulus": "^3.1.0",
    "@hotwired/turbo-rails": "^7.2.2",
    "esbuild": "^0.15.12",
    "sass": "^1.55.0"
  },
  "scripts": {
    "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets",
    "build:css": "sass ./app/assets/stylesheets/application.sass.scss:./app/assets/builds/application.css --no-source-map --load-path=node_modules"
  }
}

HotwireのTurbo Driveを使いたくない、というときはapp/javascript/application.jsに書いてある以下をfalseにすればOK

// Entry point for the build script in your package.json
import "@hotwired/turbo-rails"
import "./controllers"

Turbo.session.drive = false

Web開発をする、となるとjsはほぼ必須だけれどそのあしらい方がrailsらしくて面白い。

importmapsがもっと普及したら、より一層railsのみで開発できるようになるなぁ。

この記事の環境情報

  • Ruby on Rails 7.0.4
  • 串カツが食べたい