Rails 4.2中,Rails.application.config.assets.version不会使摘要资产文件名无效化。

13
我有一个Rails 4.2.4 (Ruby 2.2.2) 应用程序,我通过Cloudfront提供静态资源。
如果Cloudfront提供了您不想要的内容,则有两种可能性:
1.使Cloudfront中的内容无效或
2.更改提供的资产名称
但是,当我将config/initializers/assets.rb中的Rails.application.config.assets.version = '1.0' 更改为Rails.application.config.assets.version ='2.0',并删除public/assets中的所有资产,然后运行"RAILS_ENV=staging bundle exec rake assets:precompile",相同的文件名生成!
我发现使application.scss文件的digest文件无效的唯一方法是添加一些虚拟内容以引发新的md5校验和。
我做错了什么?assets.version不应该更改摘要文件名吗?
谢谢!

注意:我已经在Rails上添加了一个PR:https://github.com/rails/rails/pull/22472 - Jordan Brough
3个回答

9
根据我开启的Rails拉取请求中的评论,这是一个需要修复的回归问题:https://github.com/rails/sprockets-rails/issues/240 更新:正如sansarp提到的那样,在github问题列表中列出的解决方法之一是使用旧版本的sprockets:
gem 'sprockets', '< 3.0.0'

另一个解决方法是将资源路径用作缓存破坏器:
# config/initializers/assets.rb
Rails.application.config.assets.prefix = "/assets/v1"

2

0
如果您使用Capistrano进行部署,请务必在deploy.rb文件中设置assets_prefix
set :assets_prefix, "assets/v1"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接