社会不適合破壊的お味噌マン

くまのプーさんのような大人になりたいです!

アセットパイプラインとは

アセットパイプラインとは、JavaScriptCSSのアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワークです。アセットパイプラインでは、CoffeeScriptやSASS、ERBなど他の言語で記述されたアセットを作成する機能を追加することもできます。 技術的には、アセットパイプラインは既にRails 4のコア機能ではありません。フレームワークから分離され、sprockets-railsというgemに書き出されています。

アセットパイプライン — Rails ガイド

アセットパイプラインのファイル場所

  • app/assets: 現在のアプリケーション固有のアセット

  • lib/assets: あなたの開発チームによって作成されたライブラリ用のアセット

  • vendor/assets: サードパーティのアセット

これらのディレクトリには、それぞれのアセットクラス用のサブディレクトリがあります。たとえば、app/assetsには次のようなサブディレクトリがあります。

マニュフェストファイ

マニュフェストファイル app/assets/stylesheets/application.css

/*
* This is a manifest file that'll automatically include all the stylesheets 
* available in this directory and any sub-directories. You're free to add 
* application-wide styles to this file and they'll appear at the top of the 
* compiled file, but it's generally better to create a new file per style 
* scope. 
*= require_self 
*= require_tree . 
*/
*= require_self 

これはapplication.css自身を含むことを宣言している。

*= require_tree . 

これはapp/assets/stylesheetsディレクトリの中のすべてのCSSファイルをCSSにインクルードするように宣言している。

プリプロッサエンジン

必要なアセットをディレクトリに配置してまとめた後、Railsはさまざまなプリプロセッサエンジンを介してそれらを実行し、ブラウザに配信できるようにそれらをマニフェストファイルを用いて結合し、サイトテンプレート用に準備します。Railsは、どのプリプロセッサを使用するかを、ファイル名の拡張子を使用して判断します。最も一般的な拡張子は、Sass用の.scss、CoffeeScript用の.coffee、埋め込みRuby (ERb) 用の.erbです。3.3.3では最初にERbを、5.2.2ではSassをそれぞれ扱いました。 なお本書では扱いませんが、CoffeeScriptはエレガントで簡潔な言語で、JavaScriptコンパイルして実行します (興味のある方は、RailsCastの「CoffeeScriptの基礎 (英語)」から始めると良いでしょう)。