Ruby on rails 使用rails 4.x为资产生成错误的指纹

Ruby on rails 使用rails 4.x为资产生成错误的指纹,ruby-on-rails,nginx,capistrano,asset-pipeline,unicorn,Ruby On Rails,Nginx,Capistrano,Asset Pipeline,Unicorn,设置:Rails 4.2.5、Ubuntu 12.04、nginx 1.6、unicorn 5、capistrano 2.15 这个设置确实适用于Rails3.2,但当我开始迁移到Rails4.x时,我注意到资产有一个奇怪的行为 在应用程序中,指向资产文件(如application.js)的链接不是manifest.yml中的链接 如果我使用资产清理进行部署,我将得到很多404。应用程序和manifest.yml使用的指纹不同。 如果我在没有清理的情况下立即进行第二次部署,那么这些资产将得到服务

设置:Rails 4.2.5、Ubuntu 12.04、nginx 1.6、unicorn 5、capistrano 2.15

这个设置确实适用于Rails3.2,但当我开始迁移到Rails4.x时,我注意到资产有一个奇怪的行为

在应用程序中,指向资产文件(如application.js)的链接不是manifest.yml中的链接

如果我使用资产清理进行部署,我将得到很多404。应用程序和manifest.yml使用的指纹不同。 如果我在没有清理的情况下立即进行第二次部署,那么这些资产将得到服务。它们不再与清单匹配,但旧的仍在文件夹中。杀死独角兽并完全重启并没有改变任何事情。 我的应用程序的4.0和4.1分支也有同样的问题

资产在部署期间在服务器上编译(capistrano脚本)

更新: 我通过控制台检查生成了哪些指纹以及存在哪些文件。结果:散列很好

问题是清理脚本删除了超过一周或更长时间的文件,在执行部署(资产预编译)时,我得到了一些文件的错误时间戳


如果我刚才做了一个预编译,一些文件有一个日期戳1月4日,并被以下清理脚本删除。Capistrano在编写该文件时向我显示了一些警告,但没有任何有意义的完整信息

我曾经遇到过一个类似的问题,在MAC和LINUX上,gem从文件夹中对文件进行了不同的排序。因此,生产应用程序生成了不同的哈希。因此,您可以尝试在部署服务器和生产服务器上生成清单,并比较结果。我曾经遇到过一个类似的问题,在MAC和LINUX上,gem对文件夹中的文件进行了不同的排序。因此,生产应用程序生成了不同的哈希。因此,您可以尝试在部署服务器和生产服务器上生成清单,并比较结果。