这可能非常简单,但我不明白为什么没有错误页面。
首先,我使用 Heroku 进行托管,所以它肯定处于生产模式。
如果我将“config.action_controller.consider_all_requests_local”行设置为 true,我会收到详细的错误消息,否则,我会得到一个完全 100% 的空白屏幕。如果我查看源代码,也是空白。
我所有的 404,422,500.html 文件都是公开的,我没有碰过它们。
如果我在那里以生产模式启动,它们似乎可以在我的本地机器上工作。所以它一定与 Heroku 有关吗?有什么想法吗?
日志没有告诉我任何有用的信息。
下面是production.rb文件的详细信息
config.cache_classes = true
#ActionMailer::Base.delivery_method = :sendmail
Paperclip.options[:command_path] = "/usr/bin/"
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
# set delivery method to :smtp, :sendmail or :test
config.action_mailer.delivery_method = :smtp
# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.action_view.cache_template_loading = true
最佳答案
我认为 Heroku 不像 Passenger 或 Mongrel 那样使用 .html 文件。您可能需要通过两种基 native 制捕获和处理您自己的异常:
- 在您的 ApplicationController 中使用 rescue_from 创建一个异常处理程序,用于任何可能爆炸的东西,特别是 Object。
- 创建默认路由以捕获任何未以其他方式路由的内容。
如果您超出路由表,或触发“500”错误,那是因为异常。这些需要处理,否则您将看到一个空白屏幕,除非 Web 服务器以其他方式配置。
Apache 可以配置为使用 ErrorDocument 指令执行此操作。
关于ruby-on-rails - rails 404 422 500 完全空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364388/