我正在使用Rails 3.2.8进行开发。 令人讨厌的是,如果错误地丢失了图像,则会在生产模式中出错。
假设我说下面的代码。
实际上我忘记将my.jpg文件放在app / assets / images中,开发正常(浏览器只会忽略丢失的图像),但在生产模式下会出现rails错误。
如何在部署之前找到丢失的文件?
感谢。
萨姆
答案 0 :(得分:1)
在为部署构建新版本时,我在config/environments/test.rb
config.assets.compile = false
config.assets.digest = true
这模仿资产管道的production
环境配置,防止资产被编译并强制通过manifest.yml
文件/资产管道进行查找。运行你的测试(你确实有测试,对吗?:-))并注意失败。
如果您没有测试,请向log/development.log
发送500错误
tail -f log/development.log | grep 500
手动浏览几页,并观察尾部出现的新日志条目。你应该考虑编写测试来实现自动化。
您在生产中看到错误的原因是资产管道无法找到您请求的资产并因此而引发异常。在开发过程中,事情更加宽松,以便可以向您呈现调试信息,以支持500错误。通过在您的环境中更改上述配置,您可以通过资产管道对其对缺少资产的响应进行严格操作,从而使您能够在问题进入生产之前解决问题。
答案 1 :(得分:-1)
您可以观看在开发模式下运行的rails控制台...当它找不到图像时会显示警告。
另外,使用浏览器的错误控制台。这两个都会告诉你缺少什么,然后你只是开始贪图或视觉搜索,看看你做了(或没有)放置图像的位置。
我不知道为什么生产服务器对于破坏的代码不如你在开发中那么好,除非你真的想要推出缺少对象和引用的代码。