Ruby on Rails
資産パイプライン
サーチ…
前書き
アセットパイプラインは、JavaScriptとCSSアセットを連結したり、縮小したり、圧縮したりするためのフレームワークを提供します。また、これらの資産をCoffeeScript、Sass、ERBなどの他の言語やプリプロセッサで記述することもできます。これにより、アプリケーション内のアセットを他の宝石のアセットと自動的に結合することができます。たとえば、jquery-railsにはjquery.jsのコピーが含まれ、RailsにAJAX機能が有効になっています。
レイクタスク
デフォルトでは、 sprockets-rails
は次のレーキタスクが含まれています。
-
assets:clean[keep]
:古いコンパイル済みの資産を削除する -
assets:clobber
:コンパイルされたアセットを削除する -
assets:environment
:資産のコンパイル環境をロードする -
assets:precompile
config.assets.precompile
:config.assets.precompile
でconfig.assets.precompile
されたすべてのアセットをコンパイルしconfig.assets.precompile
マニフェストファイルとディレクティブ
assets
config/initializers/assets.rb
( config/initializers/assets.rb
)には、プリコンパイルするように明示的に定義されたいくつかのファイルがあります。
# Precompile additional assets.
# application.coffee, application.scss, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
この例では、 application.coffee
とapplication.scss
は「マニフェストファイル」と呼ばれています。このファイルは、他のJavaScriptまたはCSSアセットを含めるために使用する必要があります。次のコマンドを使用できます。
-
require <path>
:Rubyのrequire
同様のrequire
ディレクティブ関数。パス内のファイルに依存関係を宣言する方法を提供し、ソースファイルの前に一度だけロードされるようにします。 -
require_directory <path>
:単一のディレクトリ内にすべてのファイルが必要です。これは、ネストされたディレクトリに従わないため、path/*
と似ていpath/*
。 -
require_tree <path>
:ディレクトリ内のすべてのネストされたファイルが必要です。そのグロブに相当するのはpath/**/*
です。 -
require_self
:後続のrequire
ディレクティブの前に、現在のファイルの本文を挿入します。インデックスファイルに他の依存関係がロードされる前に定義する必要のあるグローバルスタイルを含むのが一般的なCSSファイルで便利です。 -
stub <path>
:ファイルをインクルードから削除する -
depend_on <path>
:依存関係をファイルに含めることなく依存関係をdepend_on <path>
できます。これはキャッシュ目的で使用されます。依存ファイルに加えられたすべての変更は、ソースファイルのキャッシュを無効にします。
application.scss
ファイルは次のようになります。
/*
*= require bootstrap
*= require_directory .
*= require_self
*/
もう1つの例はapplication.coffee
ファイルです。ここでjquery
とTurbolinks
を含めて:
#= require jquery2
#= require jquery_ujs
#= require turbolinks
#= require_tree .
CoffeeScriptを使用せずにJavaScriptを使用する場合、構文は次のようになります。
//= require jquery2
//= require jquery_ujs
//= require turbolinks
//= require_tree .
基本的な使用法
アセットパイプラインを使用する基本的な方法は2つあります。
開発モードでサーバーを実行すると、サーバーは自動的に事前処理し、資産をオンザフライで準備します。
プロダクションモードでは、おそらくこれを使ってアセットを前処理、バージョン化、圧縮、コンパイルします。次のコマンドを実行して、これを行うことができます。
bundle exec rake assets:precompile