Rails 4:将config.assets.compile设置为false将停用整个Sprockets

时间:2015-06-11 00:39:09

标签: ruby-on-rails ruby-on-rails-4

我的Rails 4应用程序中的CSS和Javascripts无法加载生产,但在分段中成功。 config/environments/staging.rbconfig/environments/production.rb之间的唯一区别是这一行:

config.assets.compile = true暂存,

config.assets.compile = false关于制作。

在暂存和生产中,我在部署期间执行rake assets:precompile。是的,指纹资产很快就位于public/assets

很有诱惑力只是举起手来,“我真的还有其他东西要编码”和just set config.assets.compile = true on production,但据我所知,这可以实现动态编译Sass和CoffeeScripts的Live Compilation,而且我不想在我们的现场网站上征收这种性能税。

但是,在生产中设置config.assets.compile = false不会生成正确的指纹URL以正确指向预编译资产。

在暂存中,我的application.css很高兴地指向https://staging.example.com/assets/application-8b1ca5ff4a98a7b28b0e932fe7412421.css。这是好的,好的,幸福和美好的。

在制作中,它令人沮丧地指向https://www.example.com/stylesheets/application.css

我如何在生产时使用没有实时编译的资产管道(链轮)?任何能在我用完头发之前帮助我的人都会非常感激。

1 个答案:

答案 0 :(得分:0)

我想我知道答案。将把我的发现留给未来的访客。

这是我的部署系统(Amazon OpsWorks)中的计时问题,代码部署在那里,然后 assets:precompile d。第一次部署不起作用。然而第二个确实如此。当所有assets:precompile的md5sum没有变化时,系统不app/assets

这导致我得出以下结论

如果config.assets.compile = false

Rails查找public/assets/manifest-md5hash.json。如果存在,则会提供/assets/application-md5hash.css指纹版本。如果它不存在,则会显示/stylesheets/application.css版本。