Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 4 Rails 4.2 Rails.application.config.assets.version不';t使摘要资产文件名无效_Ruby On Rails 4_Version_Assets_Precompile - Fatal编程技术网

Ruby on rails 4 Rails 4.2 Rails.application.config.assets.version不';t使摘要资产文件名无效

Ruby on rails 4 Rails 4.2 Rails.application.config.assets.version不';t使摘要资产文件名无效,ruby-on-rails-4,version,assets,precompile,Ruby On Rails 4,Version,Assets,Precompile,我有一个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.

我有一个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\u ENV=staging bundle exec rake assets:precompile”

将生成相同的文件名

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

我做错了什么

新的assets.version不应该更改摘要文件名吗

最好的问候和感谢

根据,这是一个需要修正的回归:

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

gem 'sprockets', '< 3.0.0'

使用以前版本的链轮可以帮助您按预期获得文件名<代码>gem“链轮”和“<3.0.0”

如果使用capistrano进行部署,请确保在
deploy.rb
文件中设置
assets\u前缀

set :assets_prefix, "assets/v1"

注意:我还为此添加了Rails PR:
set :assets_prefix, "assets/v1"