如何在生产之前捕获rails资产管道中的错误?

And*_*Vit 8 ruby-on-rails ruby-on-rails-3.1 asset-pipeline

我刚刚熟悉Rails 3.1,并且我花了一些时间来更新旧项目,并试图弄清楚新资产管道在开发模式与生产模式之间的表现.

默认config.assets.precompile设置仅保护application.cssapplication.js,目的是将所有内容都作为单个样式表和单个javascript文件提供.

显然有些情况下我们不希望这样,所以我们可以在该配置变量的列表中添加项目...

这是我在进入生产时遇到沙盒项目的情况:

  1. 浏览了开发中的网站,看到一切正常.资产作为单独的文件链接,并且网站显示正确.
  2. 将网站上传到我的服务器,并尝试让它在生产中运行.第一个错误是说"ie.css"(条件样式表)没有预编译.(我在Safari中,甚至不会下载这个样式表:stylesheet_link_tag在呈现页面之前从帮助程序中引发了错误.)
  3. 跑了rake assets:precompile又试了一次.
  4. 添加了违规项目config.assets.precompile并再次尝试.
  5. 将错误击倒在路边,直到它遇到另一个资产错误.
  6. GOTO 3.

不知道如何解决这个问题,我绕圈了几次,直到我认为我得到了所有的资产,并且该网站正在生产中.然后我在MSIE中尝试了它并点击另一个错误500:"belated_png_fix.js"正在被有条件地加载,并且直到那时才出现.

所以我的问题是,除了试验和错误或严重依赖集成测试之外,当资产管道发现某些样式表或javascript未添加到预编译列表中时,如何预测我的站点不会爆炸? ?

我也很好奇为什么缺少样式表资产会导致整个页面出错500而不是仅按需编译它或在请求该资产时提供404.这是故意"早早失败"的设计吗?

vis*_*ise 1

我在使用 Rails 3.1 时也遇到了类似的问题。您可以做的最好的事情就是安装 capistrano multi stage 并获取临时服务器。

如果由于任何原因无法做到这一点,请在您的计算机上安装虚拟机并尝试复制您的服务器环境。