AssetPipelineについて
RailsのAssetPipelineは、JavaScriptや、cssの結合・圧縮を自動でやってくれて便利だが、以下の点が気になった。
- 特定のページでしか使用しないPlugin等のファイルはapplication.jsで管理したくない。
結合・圧縮をしているとはいえ、不要なjsファイルまで一緒に読むこむのは重くなる原因になり、微妙だなと感じた
特定ページでのみ特定のJavaScriptを読み込む
かといって、vendor/assets/javascripts/hoge.js
などを作成し、
javascript_include_tag
で読み込もうとすると、assetprecompileで読み込めないとエラーが出るので、
config/initializers/assets.rb
を作成し、そこにファイルパスを追加する。
$ vim config/initializers/assets.rb
- config/initializers/assets.rb
Rails.application.config.assets.precompile += [ "hoge.js", ]
追加後、Serverを再起動し、javascript_include_tag
で以下の様に追加する
1. $ vim app/views/layouts/application.html.erb
- app/views/layouts/application.html.erb
.... <%= javascript_include_tag 'hoge.js', 'data-turbolinks-track' => true %> ....
ページのソースを確認すると、hoge.jsがapplication.jsとは別に読み込まれていることが確認出来るはず。