埋め込みアセットテーマ

ああ、しまった :flushed_face: Nginxだった!

TL;DR:

rm -rf /var/nginx/cache/*`

即効性がある!


オプション:Nginxアセットキャッシュの無効化

このファイルを編集します:

/etc/nginx/conf.d/discourse.conf

243〜246行目あたりで、キャッシュディレクティブをコメントアウトします:

      # proxy_cache one;
      # proxy_cache_key "$scheme,$host,$request_uri";
      # proxy_cache_valid 200 301 302 7d;
      # proxy_cache_bypass $bypass_cache;

その後、Nginxを再起動します:

sv restart nginx

:artist_palette: カラーパレットを変更する場合…

テーマのカラー設定を編集するだけでは、embed_[digest].css は再生成されません。Discourseに新しいアセットファイルを生成させるには、次のようにします:

rm tmp/stylesheet-cache/* # または、embedのみの場合は `rm tmp/stylesheet-cache/embed*`

:thinking: RAILS_ENV=development については?

RAILS_ENV: development を設定するとキャッシュが無効になると思うかもしれませんが、以下の理由によります:

  • Discourseが使用する nginx.sample.conf は、環境に関係なくデフォルトでキャッシュが有効になっています。
  • そのキャッシュは RAILS_ENV に紐づいていないため、埋め込みアセットキャッシュには役立ちません。

Nginxレイヤーを完全に再設定する予定がない限り、手動でキャッシュをクリアするか、それらの行を無効にするだけで済みます。本番環境の準備ができたら、元に戻すことができます。

:turtle: ./launcher rebuild standalone については?

確かに、それは機能します。しかし、テーマを積極的に調整したり、埋め込みをテストしたり、色を調整したりしている場合は、毎回数分待つよりも速い方法が必要になるでしょう。

:speech_balloon: より良い開発環境や簡単な修正方法は? ぜひ共有してください!