はじめに
必要になったときにいつも忘れているので、Railsのアセット関連の設定項目をまとめてみました。
public以下のファイルを公開するかどうか
config.serve_static_assets = true # Rails4以前
config.public_file_server.enabled = true # Rails5以降
Rails5から書き方が変わったので、Rails5の移行作業で触った人も多いはず。falseだと、public以下のファイルは公開されず、他の配信用サーバーから配信する必要がある。パフォーマンス面から言えば、静的なファイルはRailsからではなく、CDNなどで配信する方が良い。
assetsをコンパイルするときに、圧縮するかどうか
config.assets.js_compressor = :uglifier
config.assets.css_compressor = :sass
JSとCSSのコンプレッサを指定する。指定がなければ、圧縮しない。コンプレッサを指定したら、対応するgemをインストールする必要がある。
アセットが見つからないとき、コンパイルを実行するかどうか
config.assets.compile = false
trueにすると、アセットが見つからないときに自動でコンパイルを試みてくれる。
プリコンパイルするアセットを設定する
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
Rails.application.config.assets.precompile += %w( search.js )
application.js・application.css以外でプリコンパイルしたいJSやCSSファイルがある場合は、追加する。
プリコンパイルを実行するrakeコマンド
$ bundle exec rake assets:precompile
$ bundle exec rake assets:precompile assets:clean
assets:clean
をつけると、古いプリコンパイルされたファイルを削除してくれる。ただし直近3バージョンまでは削除せず、保持しておく模様。プリコンパイルの度に新しいファイル名をつけてくれるので、ブラウザキャッシュのせいで起こる問題を回避できる。