Docker/ローカルの両環境で tailwindcss:watch を起動する | Rails

Web技術メモ

はじめに

昨日、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.

タイトルとURLをコピーしました