我目前正在使用asset_sync将我的资产从Rails移至S3。
我们将JS库作为bootstrap.js
提供,它引导其他应通过摘要进行缓存控制的样式表/ js。由于我希望能够快速地将功能更改为我们的库,bootstrap.js
是短暂的,因此必须非常小,而缓存消化的css / js应该永远与Rails资产管道原则相关。 / p>
问题现在是当我进行预编译时,消化的bootstrap.js
正确加载缓存消化的其他css / js,但非摘要bootstrap.js
仅指向非摘要的等价物尽管我明确地将:digest
设为真
<%= asset_path 'badgelib.js', :digest => true %>
是否有其他方法可以强制资产链接到摘要版本?
答案 0 :(得分:0)
我讨厌修补Sprockets来为我做这件事:
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
端 端