web-dev-qa-db-ja.com

railsでのスプロケットの意味

それで、SprocketsがRailsに何があるのか​​、まったくわからないことに気づきました。

ブートストラップまたはマテリアライズのいずれかを使用する場合、application.jsファイルにsprocket(ブートストラップ-sprocketまたはmaterialize-sprocket)を含めることが要求されます。

私が検索するすべてのものは、アセットパイプラインについて話し、さらに混乱します。

Rubyガイドによると、

アセットパイプラインは技術的にRails 4のコア機能ではなくなりました。フレームワークから抽出され、sprockets-Railsジェムに組み込まれました。

私がbundle show sprockets-Railsをしたとき、私は得ました:

/Users/Sunday/workspace/resilience/vendor/bundle/Ruby/2.1.0/gems/sprockets-Rails-2.3.1

少なくとも私は宝石を持っていることを示しています。

しかし、私の混乱と私の質問は、sprocketsbootstrapのような他の宝石を作成したsprockets-Railsとは対照的に、materializeの重要性は何であるか、そしておそらく他の一部の人は、特にJavaScriptファイルでsprocketsを使用することですか?

ありがとう。

28
x6iae

Sprocketsは、Ruby Webアセットをコンパイルおよび提供するためのライブラリです。Sprocketsを使用すると、アプリケーションのJavaScriptファイルを、より多くの管理しやすいチャンクに整理して、多数のディレクトリやファイルに分散させることができます。構造とプロジェクトにアセットを含める方法に関するプラクティス。

Sprocketsは、各JavaScriptファイルの先頭にあるディレクティブを使用して、JavaScriptファイルが依存するファイルを判別できます。アプリケーションのデプロイに関しては、Sprocketsはこれらのディレクティブを使用して複数のJavaScriptファイルを単一のファイルに変換し、パフォーマンスを向上させます。

29
Sooraj Chandu
/app/assets/javascripts/application.js
// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

application.jsファイルはマニフェストと呼ばれ、Sprocketsによって内部的に管理されます。このファイルへのリクエストが入ってくると、Sprocketsはマニフェストを調べ、compilesで言及されているすべてのファイルをまとめて、このファイルのコードの前にコンテンツを含めます。 Sprocketsloadpathでこのファイルを検索し、この場合はjquery-Railsエンジンのvendor/asset/javascriptsディレクトリからロードします。

8
Milind