Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 链接到缓存摘要资产的Non-digest.js_Ruby On Rails_Ruby On Rails 3_Amazon S3_Asset Pipeline_Sprockets - Fatal编程技术网

Ruby on rails 链接到缓存摘要资产的Non-digest.js

Ruby on rails 链接到缓存摘要资产的Non-digest.js,ruby-on-rails,ruby-on-rails-3,amazon-s3,asset-pipeline,sprockets,Ruby On Rails,Ruby On Rails 3,Amazon S3,Asset Pipeline,Sprockets,我目前正在使用asset_sync将我的资产从Rails移动到S3 我们将我们的JS库作为一个bootstrap.JS,它引导其他应该通过摘要进行缓存控制的样式表/JS。由于我希望能够快速地将功能更改为我们的库,bootstrap.js是短暂的,因此必须非常小,而根据Rails资产管道原则,缓存消化的css/js应该永远存在 现在的问题是,当我进行预编译时,经过摘要处理的bootstrap.js会正确地加载缓存中经过摘要处理的其他css/js,而非摘要处理的bootstrap.js只指向非摘要的

我目前正在使用asset_sync将我的资产从Rails移动到S3

我们将我们的JS库作为一个
bootstrap.JS
,它引导其他应该通过摘要进行缓存控制的样式表/JS。由于我希望能够快速地将功能更改为我们的库,
bootstrap.js
是短暂的,因此必须非常小,而根据Rails资产管道原则,缓存消化的css/js应该永远存在

现在的问题是,当我进行预编译时,经过摘要处理的
bootstrap.js
会正确地加载缓存中经过摘要处理的其他css/js,而非摘要处理的
bootstrap.js
只指向非摘要的等价物,尽管我显式地将
:digest
设置为true

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

有没有其他方法可以强制资产链接到摘要版本?

我不想让monkey patch链轮为我这样做:

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
结束 结束