我在这个问题上花了几天时间撕掉头发,看着资产管道上的几十个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修复了这一点,但是没有.
解决方法
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上发生.