キャッシュクリア
bundle exec rake tmp:cache:clear
とか
rake tmp:cache:clear
でキャッシュをクリアする。
public/assets
配下のファイルを削除
public/assets/*.js
を削除するか、config/environments/production.rb
でconfig.assets.js_compressor
を変更する。
今回は
public/assets
にファイルがある場合は、削除する。
の方針で、対処してみましたが、Rails 4ではpublic/assets
は作成されないようなので、特に何もしてません。
rm public/assets/*.js
キャッシュクリアのみでちゃんとminifyされました。
設定ファイル
開発環境の設定ファイル(config/environments/development.rb
)で確認してみました。
設定は下記のようになっています。
# From production
# Compress JavaScripts and CSS.
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = false
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params.
config.assets.digest = false
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
config.assets.digest
について
config.assets.digest
の設定がなんなのか最初良くわからなかったのですが、
これをconfig.assets.digest = true
としておくと、アセットファイル名にハッシュ値(MD5)が付加されるようです。
例)application.css ⇒ application-908e25f4bf641868d8683022a5b62f54.css
ファイル名にハッシュ値がつくということは、内容が少しでも変わる度に別のファイル名で保存されるということです。
以前にプリコンパイルされた古いアセットファイルや古いキャッシュが残ってしまう可能性があるので(ここは未確認)、毎回、キャッシュクリア(rake tmp:cache:clear
)して、プリコンパイル(rake assets:precompile
)した方が良いかと思います。
#!/bin/bash
#
# キャッシュクリアしてプリコンパイルする
#
rake tmp:cache:clear
rake assets:precompile
みたいなスクリプトを組んでおくのも良いかもしれませんね。