ruby-on-rails – Rails 3.1.1资产管道Heroku缓存gotcha

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails 3.1.1资产管道Heroku缓存gotcha前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
简而言之,问题在于,在开发模式下,我们将对CSS或JS文件进行更改,但始终会获取这些文件的缓存/旧版本.我没有任何效果.我检查了几十次配置,并尝试配置值的每个组合,但始终保持相同的结果:stale / cached文件.我必须实际运行在生产模式,并在每次更改后重新启动服务器进行测试.

我在这个问题上花了几天时间撕掉头发,看着资产管道上的几十个stackoverflow问题,但从来没有找到一个解决它的问题,所以我以为我会把它发贴在后面.

我们使用Heroku并预编译我们的资产,因为Heroku未能为我们预编译(我们还使用显然是英雄预编译失败的原因的设计).所以为了推动我们的预编译资产到Heroku,我们必须检查他们git.

这是问题.

当我们升级到Rails 3.1.1资产预编译生成文件时,带有和不带有名称中的MD5哈希.我没有想到太多,并且继续检查所有这些文件,所以我可以推到英雄.有一段时间,我注意到缓存结果在开发模式下的问题.预先编译和检查的资产没有MD5散列从/ public / assets作为静态文件提供,这阻止了我们在/ app / assets中发生任何改变.

终于意识到这一点,我跑了git rm / public / assets,一切都起作用了.所以外卖是:仔细检查资产到git!

把它变成一个问题:别人怎么做?我错过了什么吗?我真正希望的是Heroku可以为我预先编译资产,但是由于设计,我收集的数据库连接错误是失败的.我曾经希望Rails 3.1.1修复了这一点,但是没有.

解决方法

你在 github上签了这个 devise issue吗?何塞·瓦林说

Rails 3.1.1 final has a method called
config.assets.initialize_on_precompile. If you set it to false,you
should be good but it won’t allow you to access model information on
your assets (which you probably shouldn’t anyway).

也许这将允许预编译在Heroku上发生.

猜你在找的Ruby相关文章