Hotwire SparkでSlimファイルもホットリロード対象にする方法

に公開

はじめに

Hotwire Sparkは、Rails開発時にファイルの変更を検知して自動的にブラウザをリロードしてくれる便利なgemです。しかし、デフォルトではSlimファイル(.slim)は監視対象に含まれていません。

この記事では、Hotwire SparkでSlimファイルの変更も検知できるようにする設定方法を紹介します。

結論

config/environments/development.rb に以下の設定を追加するだけでOKです:

config.hotwire.spark.html_extensions += %w[ slim ]

具体的な設定手順

1. Gemfileに追加

まず、Gemfileのdevelopmentグループにhotwire-sparkを追加します:

group :development do
  gem "web-console"
  gem "hotwire-spark"
  # その他の開発用gem
end

2. development.rbに設定を追加

config/environments/development.rbにSlim拡張子を監視対象に追加する設定を記述します:

require "active_support/core_ext/integer/time"

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.
  
  # Slimファイルを監視対象に追加
  config.hotwire.spark.html_extensions += %w[ slim ]
  
  # その他の設定...
end

3. Railsサーバーを再起動

設定を反映させるため、Railsサーバーを再起動します。

これで、Slimファイルを編集すると自動的にブラウザがリロードされるようになります!

仕組みの解説

Hotwire Sparkには html_extensions という設定があり、HTMLコンテンツの変更を検出する拡張子のリストが定義されています。デフォルトでは以下のような拡張子が含まれています:

  • rb - Rubyファイル
  • erb - ERBテンプレート

このリストに slim を追加することで、Slimファイルの変更もHTML変更として検知されるようになります。

補足:監視パスの追加

もし特定のディレクトリ配下のSlimファイルだけを監視したい場合は、html_paths も設定できます:

config.hotwire.spark.html_paths += %w[ app/views/shared ]

ただし、デフォルトで app/views は監視対象になっているため、通常は不要です。

注意点

  • Railsのテンプレートキャッシュが有効になっている場合、変更が即座に反映されないことがあります
  • 開発環境以外では不要な設定なので、必ず development.rb に記述しましょう

まとめ

Hotwire SparkでSlimファイルをホットリロード対象にするには、以下の1行を追加するだけです:

config.hotwire.spark.html_extensions += %w[ slim ]

これで、Slimを使った快適なRails開発環境が実現できます。ぜひお試しください!

参考

Discussion