Rails 3.1资产管道 - 从公共/资产中丢失文件 - 为什么这不是默认值?

she*_*edd 9 assets ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

在今天下午将我升级的Rails 2.3.x - > 3.1(rc4)应用程序部署到我们的测试环境后,我们所有的样式表和JavaScript文件都返回了404错误.我们已经将rake资产:预编译任务添加到我们的部署后脚本中,并且花了一些时间来确定assets文件夹为什么没有我们预期的预编译文件.

最后,文件没有被编译,因为默认情况下只处理application.css和application.js(+非JS/CSS文件).

我们需要更改以下配置值,如下所示:

config.assets.precompile += %w( *.js *.css )
Run Code Online (Sandbox Code Playgroud)

问题:为什么这不是默认值?

我原本预计,任何不必作为清单文件处理的东西都会被复制到公共/资产中.我在资产管道上阅读的大部分内容基本上是"将资产放在app/assets中,配置清单文件,它应该正常工作".由于资产:预编译任务没有吐出任何有关它正在做什么的信息,因此需要一段时间才能确定它只是没有查看我们认为会存在的文件.

有什么理由说这对于预编译配置来说不是一个好的价值吗?

谢谢!

Chr*_*ber 9

我们的想法是让你的所有JavaScript和CSS总是一次性加载,而不是在你移动时加载点点滴滴.这样你总是可以加载"世界"并准备好使用,而不必在这里和那里包含一大堆单个文件.

这是一个更大的"预先"负载,但随后浏览器应该继续加载缓存中的所有javascript.因此,由于在第一次请求之后缓存了所有内容并准备好了,所以网站的感知速度应该加快.

这是一个有争议的决定,包括Rails,但默认包括CoffeeScript.Rails一直是一种自以为是的框架.