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

Ste*_*ühn 13 assets version precompile ruby-on-rails-4

我有一个Rails 4.2.4(Ruby 2.2.2)应用程序,我通过Cloudfront提供静态资产.

如果Cloudfront提供您不想要的东西,有两种可能性:

  • 使Cloudfront中的内容无效或
  • 更改所服务资产的名称

但是,当我改变

Rails.application.config.assets.version ='1.0'

Rails.application.config.assets.version ='2.0'

(在config/initializers/assets.rb中)

  • 删除公共/资产中的所有资产

  • 运行"RAILS_ENV = staging bundle exec rake assets:precompile"

生成相同的文件名!

我发现使application.scss的消化文件无效的唯一方法是添加一些虚拟内容以激发新的md5校验和.

我究竟做错了什么?

不应该新的assets.version改变消化的文件名吗?

最诚挚的问候和感谢!

Jor*_*ugh 9

按照在Rails的意见拉要求我打开,这是一个需要修复回归:https://github.com/rails/sprockets-rails/issues/240

更新:正如sansarp提到的那样,github问题中列出的一个解决方法是使用旧版本的链轮:

gem 'sprockets', '< 3.0.0'
Run Code Online (Sandbox Code Playgroud)

另一种解决方法是使用资产路径作为缓存断路器:

# config/initializers/assets.rb
Rails.application.config.assets.prefix = "/assets/v1"
Run Code Online (Sandbox Code Playgroud)