Asset Pipelineとは
JavaScriptやCSSのアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワーク
参照: Railsガイド -AssetPipelineについて-
https://railsguides.jp/asset_pipeline.html
この記事は、AssetPipelineの概要を説明しておくことで、RailsガイドのAssetPipeline記事の理解度を深めるためのものです。
そもそもcoffeescript、sass、erbなどはプログラムを書く・読む人側にとって生のjs/cssよりも簡単に書けるので嬉しいが、実行するマシン側にとっては読み取りづらいもの。これらcoffeescript, sassなどは高級言語と呼ばれるが、これらを .js.coffee→.jsに、 .css.sass→.css に**自動でコンパイルとminify(縮小)**してくれるのが、Asset Pipelineの役目。
ただし、コンパイルは、開発(development)環境のみで行われる。開発環境では、debuggerなどでデバッグをする以上、出来る限り、開発中のjs/cssを保持していた方がプログラムを書く・読む人側にとっては助かるからである。
ここでのコンパイルの定義は、プリコンパイルを含まないものとします。後述。
では、本番環境では何が行われているか?
本番環境では
1: プリコンパイルファイル群の存在
2: 1のファイル群を1枚のjsファイル、1枚のcssファイルに統合
3: 圧縮
4: ダイジェスト付与
を行う。この最初に出てきたプリコンパイルファイルについてだが、そもそも本番環境でもコンパイルを行ってしまうと、アプリケーションの実行速度に大きく影響されてしまう。
そのため、予めコンパイルされたファイル群を持たせておく(プリコンパイルする)ことで本番環境での実行速度を保とう、ということだ。
開発環境と、本番環境の流れを図で表すと、以下のようになる。左上から始まり、開発(development)環境は途中で出力されるが、本番環境は最後の右下に到達する。
上記の内容がRailsガイドの理解に深まることを願う。
https://railsguides.jp/asset_pipeline.html