2021年8月27日 現場Rails Chapter6-8 アセットパイプライン(その②)
探索パスについて
マニフェストファイルがファイルを探しに行くためのパスを探索パスと言います。
マニフェストファイルはデフォルトで以下のパスを探しに行きます。
app/assets/*
lib/assets/*
vendor/assets/*
上記以外のパスを参照したい場合、config/initializers/assets.rbに以下のように記述します。この記述をすることで、node_modules
ディレクトリを探索パスとして設定できます。
Rails.application.config.assets.paths << Rails.root.join('node_modules')
コンソール上で探索パスを確認するには、
puts Rails.application.config.assets.paths
で確認することができます。
アセットの設定
config/initializers/assets.rbとは全ての環境に共通する設定を記述するファイルです。
#config/initializers/assets.rb内に記述 #defaultで設定されているもの #アセットのバージョンを設定する※ Rails.application.config.assets.version = '1.0' #検索パスにnode_moduleを追加 Rails.application.config.assets.paths << Rails.root.join('node_modules') #プリコンパイルするファイルを設定 Rails.application.config.assets.precompile += %w( admin.js admin.css )
config/environments/*では環境別の設定をconfig/environments以下のファイルに記述します。development環境とproduction環境の違いもここに記述します。
#config/environments/以下に記述 #デバックモードで動作する(アセットの連結や前処理を行わない) #defaultでdevelopment環境でのみ有効 config.assets.debug = true #アセットへのリクエストに関するログを減らす。(処理を早くするため) #defalutではdevelopment環境で有効 config.assets.quiet = true #JSとCSSの圧縮方法 #defaultではproduction環境でのみ設定されている config.aseets.js_compressor = :uglifier config.assets.css_compressor = :sass #プリコンパイル済みのアセットが存在しないときに、自動でコンパイルを行わない config.assets.compile = false #アセットファイルを配信するサーバーを設定 config.action_controller.aseet_host = 'サーバーURL'
プリコンパイルとは・・・前処理(preprocess)を行うプログラムのことで、コンパイラの前処理を行います。
アセットのバージョンを指定するとは?
コンパイル時のダイジェストの生成をする(ファイル名の末尾にハッシュを付与する)フェーズで特定の文字列の情報を持たせることができます。そうすることで、バージョン管理の概念を持たせることができます。以下のようにconfig/initializers/assets.rbの中に記載することができます。
Rails.application.config.assets.version = '1.0'
バージョンを変更すると、変更前のアセットは使用できなくなることに注意します。ただ、あくまで、ハッシュ情報に文字列を持たせているだけなので、文字列が一致すれば使用することはできます。
参照
Rails Guide Configuring Rails Applications https://guides.rubyonrails.org/configuring.html
What does config.assets.version do in Rails? - stack overflow https://stackoverflow.com/questions/13873176/what-does-config-assets-version-do-in-rails
アセットパイプライン動的コンパイル https://railsguides.jp/asset_pipeline.html#%E5%8B%95%E7%9A%84%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB