Rails 5.2升级后异常不显示,始终展示500错误页问题咨询
我之前帮几个朋友排查过类似的Rails 5.2升级问题,给你几个实用的排查方向,应该能解决你的问题:
先确认配置是否真的生效:别光看development.rb的设置,直接在rails控制台里跑
Rails.application.config.consider_all_requests_local,看看返回值是不是true。有时候其他初始化脚本、环境变量(比如RAILS_LOCAL_REQUESTS)或者第三方gem会偷偷覆盖这个配置。排查异常捕获类中间件/gem:很多错误监控类gem(比如Sentry、Rollbar)在升级后可能默认在开发环境也开启了异常捕获,直接把异常吞掉跳转到500页。你可以暂时在Gemfile里注释掉这类gem,运行
bundle install后重启服务器,看看异常能不能正常显示。另外也检查下自己写的自定义中间件,有没有全局捕获Exception的逻辑。解决日志过载问题,定位关键错误:日志太多看不到重点?临时调整日志级别试试——在development.rb里加上
config.log_level = :warn,这样只会输出警告和错误信息,就能快速定位到异常根源了。或者用命令行过滤日志,比如运行tail -f log/development.log | grep ERROR,实时查看错误相关的日志内容。检查config.exceptions_app配置:Rails 5.2里
config.exceptions_app的默认行为有调整,如果你的项目里自定义了这个配置(比如设置成自己的异常处理路由),会覆盖开发环境默认的异常展示页面。打开development.rb看看有没有类似config.exceptions_app = self.routes的设置,注释掉再试试。清除缓存和临时文件:有时候配置缓存会导致修改不生效,先运行
rails dev:cache确认开发缓存是不是关闭的(输出提示“Development mode is now disabled.”就对了),再运行rails tmp:clear清除所有临时文件,然后重启服务器。
内容的提问来源于stack exchange,提问作者Tallboy

