はじめに
昨日、Docker対応のために Procfile.dev を調整した直後、ローカル環境で bin/dev 実行時にCSSウォッチが起動しない問題が発生しました。
原因と対策をメモします。(Docker側は問題なし。本記事はローカルの不具合)
環境
- macOS / Ruby 3.4.4 / Rails 8.0.2 / Puma 6.6
- tailwindcss-rails(v4系)
- Foreman + Procfile.dev
問題
ローカルで bin/dev を実行すると、cssプロセスが起動直後に落ちる。
css.1 | unknown command: ./bin/tailwindcss -i app/assets/stylesheets/application.tailwind.css -o app/assets/builds/application.css --watch
Webは立ち上がるが、CSSがビルドされずスタイルが当たらない。
原因
- Procfile.dev をCLI直叩きの書式にしていた
- しかし構成は tailwindcss-rails(bin/tailwindcss は存在しない)
- つまりbundling方式のミスマッチが原因
補足:Dockerで watch が即終了する問題には「TTY/STDIN が閉じた扱い」も絡むが、本件(ローカルの unknown command)は上記ミスマッチが本質。
対策
Procfile.dev をRailsタスク方式に戻す。両環境で安定させるために引数を追加。
css: bin/rails tailwindcss:watch[always,poll]
compose.dev.yml に tty / stdin_open を追加。
services:
web:
tty: true
stdin_open: true
参考
GitHub - rails/tailwindcss-rails
Contribute to rails/tailwindcss-rails development by creating an account on GitHub.