2015-09-17 8 views
6

開発環境で資産をプリコンパイルできないのはなぜですか?私はスプロケットが基本的にすべての資産をコンパイルすることを知っています。Ruby on Railsの開発環境でアセットがどのようにプリコンパイルされていますか?

私たちは、本番環境に行くとき、我々は、コマンドを実行します。

rake assets:precompile 

しかし、それは自分自身をコンパイルするために、我々は何もできない開発のenvに。 両方の環境で資産のコンパイルの動作の違いは何ですか?

答えて

6

すべてのWebアプリケーションには、ユーザーのやりとりや動作を処理するためのJavaScriptファイルと一緒に見えるように、いくつかの画像とCSSファイルが含まれています。アセットの読み込み速度が速い場合、Webアプリケーションのパフォーマンスが向上するはずです。拡張、圧縮(gzip)、キャッシングなど、資産を高速に読み込む方法は多数あります。

開発モードでは、資産はマニフェストファイルで指定された順序で別々のファイルとして提供されます。

このマニフェストAPP /資産/ JavaScriptの/ application.js:本番環境スプロケットにおいて

//= require core 
//= require projects 
//= require tickets 

は、上記で概説したフィンガープリント方式を使用します。デフォルトでは、Railsは、アセットがプリコンパイルされているとみなし、Webサーバーによってアセットとして提供されます。

プリコンパイル段階では、コンパイルされたファイルの内容からMD5が生成され、ディスクに書き込まれるときにファイル名に挿入されます。これらのフィンガープリントされた名前は、マニフェスト名の代わりにRailsヘルパーによって使用されます。例えば

この:

<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script> 
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen" 
rel="stylesheet" /> 

注:

<%= javascript_include_tag "application" %> 
<%= stylesheet_link_tag "application" %> 

はこのような何かを生成し、キャッシュと::アセット・パイプラインで連結オプションはもはや使用されていないから、これらのオプションを削除javascript_include_tagとstylesheet_link_tagです。

指紋の振る舞いはconfig.assets.digest初期化オプションによって制御されます(デフォルトでは本番ではtrue、それ以外の場合はfalse)。

Precompiling Rails Assets for Development

13

あなたは開発環境で資産をプリコンパイルしたい場合は、このコマンドを使用することができます。

RAILS_ENV=development bundle exec rake assets:precompile 
あなたが使用して、デフォルトでは、開発環境で資産をプリコンパイルすることができます

コンフィグ最もでは/ development.rb

config.assets.debug = false 

開発プロセスがより難しくなるため、必要ない場合もあります。

+0

あなたが偽config.assets.compile = –

+0

の目的をellaborateすることができ、この質問に素敵な答えがあります:http://stackoverflow.com/a/8827757/589620 –

+0

何config.assetsが。compile = falseは、コンパイルされたアセットを使用せず、アセットフォルダ内のすべてを選択すると言っていますが、それをtrueに設定すると、アセットをコンパイルし、コンパイルされたアセットを探し出します。 – Zahid

関連する問題