16

本番環境で config.assets.precompile を使用して、「lib/assets/javascripts」、「lib/assets/stylesheets」、「vendor/assets/javascripts」、および「vendor/assets/stylesheets」のファイルのみを含めるにはどうすればよいですか?

基本的に次のようなもの:

config.assets.precompile += %w( pagespecific.js anotherpage.js )

ただし、「app/assets/javascripts」または「app/assets/stylesheets」ではない特定のディレクトリにファイルを自動的に含めるために使用されます。

*編集:ページ固有のjsに使用することになったソリューションを追加

config.assets.precompile += ['pages/*.js']
4

5 に答える 5

31

次のように簡単に記述できます。

config.assets.precompile += ['directory/*']
于 2012-09-27T05:18:37.910 に答える
3

アセットをコンパイルするポイントは、1 つ (または少数) のファイルを作成して、ブラウザーからの HTTP 要求の数を最小限に抑えることです。

各ファイルを個別に提供する場合は、プリコンパイルを無効にしてみませんか?

意図したとおりにプリコンパイルを使用するには、Sprockets を使用してディレクトリ全体を 1 つのファイルにビルドしますrequire_directory

//= require_directory ./awesome_js_app

...そしてそのファイルをconfig.assets.precompile配列にリストします。

デフォルトでは、すべての CSS は に組み込まれ、application.cssJSは に組み込まれapplication.jsます。config/environments/production.rbprecompileディレクティブ (および必要に応じて他の env) を使用してコンパイルする最上位ファイルを追加できます。次に例を示します。

config.assets.precompile += %w( public.css public.js )

//= require ...次に、これらの最上位ファイルの Sprocketsディレクティブが、最終的なコンパイル済みファイルの構成を決定します。

これらの追加の最上位ファイルをレイアウトで使用して、特定のビューに異なる CSS と JS を持たせることができます。

于 2012-09-27T04:59:15.090 に答える
1

これをアセットパスとして含める方がおそらく少し良いでしょう(ソリューションの例に従って):

config.assets.paths << Rails.root.join('app', 'assets', 'javascripts', 'pages')

また、アセット ディレクトリにないパスを含めることもできます (たとえば、bootstrap-sass. これらのパスは、パブリック ディレクトリのアセット フォルダーに追加され、asset_sync.

于 2014-10-01T07:26:34.417 に答える
0

このリンクを見つけました。参考になるかもしれません。ご覧ください

キースガプティスの答え。app/assets 内のすべての CSS および JS ファイルを処理する Rails の config.assets.precompile 設定

以下のようにすればよいと思います。

# In production.rb
config.assets.precompile << Proc.new { |path|
  if path =~ /\.(css|js)\z/
    full_path = Rails.application.assets.resolve(path).to_path
    app_assets_path = Rails.root.join('app', 'assets').to_path
    if full_path.starts_with? app_assets_path
      puts "excluding asset: " + full_path
      false
    else
      puts "including asset: " + full_path
      true
    end
  else
    false
  end
}
于 2012-09-27T04:50:51.513 に答える