我刚刚熟悉Rails 3.1,并且我花了一些时间更新旧项目,并试图弄清新资产流水线在开发模式和生产模式下的表现。在生产之前如何捕捉钢轨资产管道中的错误?
默认config.assets.precompile
设置祝福仅application.css和的application.js,意图使一切应该担任一个样式表和一个JavaScript文件。
显然,有情况时,我们不希望出现这种情况,所以我们可以将项目添加到该配置变量列表...
这是我遇到了我的沙盒项目将生产时的情况:
- 在开发中浏览网站,看到一切正常。资产被链接为单独的文件,并且该网站正确显示。
- 上传该网站到我的服务器,并试图让它在生产中工作。第一个错误是说“ie.css”(一个条件样式表)没有预编译。 (我在Safari中,这个样式表甚至不会被下载:在渲染页面之前,这个错误是由
stylesheet_link_tag
助手引发的。) - Ran
rake assets:precompile
并重试。 - 将犯罪项目添加到
config.assets.precompile
并再次尝试。 - 将路径中的错误消除,直到遇到另一个资产错误。
- GOTO 3.
不知道如何解决这个问题,我几次去兜圈子,直到我以为我得到了所有的资产和网站在生产中进行渲染。然后我在MSIE中试了一下,并且遇到另一个错误500:“belated_png_fix.js”正在有条件加载,直到那时才出现。
所以我的问题是,除了试验和错误或严重依赖集成测试,我怎么能预测,当资产管道发现某些样式表或JavaScript没有添加时,我的网站不会弹出到预编译列表?
我也很好奇,为什么一个缺失的样式表资产应该导致整个页面出错500,而不是仅仅按需编译它,或者在请求资源时提供404。这是故意设计的“早期失败”吗?
我最近将一个旧应用程序转换为资产管道,并没有任何问题。我花了一段时间才弄清楚一切如何一起工作。要回答你的问题,你能显示你的css和js文件的内容,特别是require语句吗?我也很感兴趣的是你如何从视图中调用这些。最后,他们都在应用程序/资产或您是否使用库/资产和供应商/资产? –