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を再起動し、<code>javascript_include_tag</code>で以下の様に追加する
1. <code>$ vim app/views/layouts/application.html.erb</code>
1. ```app/views/layouts/application.html.erb
....
<%= javascript_include_tag 'hoge.js', 'data-turbolinks-track' => true %>
....
```
ページのソースを確認すると、hoge.jsがapplication.jsとは別に読み込まれていることが確認出来るはず。
## 参考
[The Asset Pipeline — Ruby on Rails Guides](http://edgeguides.rubyonrails.org/asset_pipeline.html)