0

現在、asset_syncを使用してアセットをRailsからS3に移動しています。

JSライブラリはbootstrap.js、ダイジェストを介してキャッシュ制御する必要がある他のスタイルシート/jsをブートストラップするものとして提供されます。ライブラリの機能をすばやく変更できるようにしたいので、bootstrap.js寿命が短く、したがって非常に小さい必要がありますが、キャッシュで消化されたcss / jsは、Railsアセットパイプラインの原則に従って永久に存続する必要があります。

問題は、プリコンパイルを実行すると、ダイジェストbootstrap.jsがキャッシュダイジェストされた他のcss / jsを正しくロードすることですが、明示的にtruebootstrap.jsに設定しているにもかかわらず、非ダイジェストは非ダイジェストの同等物のみを指します。:digest

<%= asset_path 'badgelib.js', :digest => true %>

アセットをダイジェストバージョンにリンクさせる他の方法はありますか?

4

1 に答える 1

0

私は私のためにそれをするためにモンキーパッチスプロケットを嫌います:

class Sprockets::Helpers::RailsHelper::AssetPaths
def digest_for(logical_path, digest_assets = digest_assets)
  if digest_assets && asset_digests && (digest = asset_digests[logical_path])
    return digest
  end

  if compile_assets
    if digest_assets && asset = asset_environment[logical_path]
      return asset.digest_path
    end
    return logical_path
  else
    raise AssetNotPrecompiledError.new("#{logical_path} isn't precompiled")
  end
end
def rewrite_asset_path(source, dir, options = {})
  if source[0] == ?/
    source
  else
    source = digest_for(source, true) unless options[:digest] == false
    source = File.join(dir, source)
    source = "/#{source}" unless source =~ /^\//
    source
  end
end

エンドエンド

于 2012-11-12T13:45:41.777 に答える