[rails7]プロジェクトのセットアップ
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
- 串カツが食べたい
railsに関する他の記事を読む
- omniauth-google-oauth2でscopeを追加するときはemailが必須だった
- google-api-clientを指定してinstallするのはもう非推奨になっていた
- OmniAuthでdeveloper providerを使ってダミーログインをする
- [Rails]取得したクラス名をキャメルケースからスネークケースに変換する
- urlヘルパーをモデルなどでも使う方法
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら