心态
首先是培养良好的心态,出现任何问题,都不过于慌张,不急着盲目尝试,而是先理清楚所遇到的问题、找到问题原因。
如果花了较多时间仍没解决问题,又已经很疲倦、头脑不清晰,那继续盲目死磕多半也收效甚微。这种情况下较好的处理方式是停下来休息一会儿,喝口水吃点东西、伸展身体放松一下,再接着有策略有方法地死磕。
下面是自己调试 Rails 时常用到的一些基本方法:
重启
重启服务器
Rails 很多文件里用到 require 加载依赖文件,文件被编辑后不会自动重载,需要重启服务器生效。重启终端
有时候需要重启终端才能让文件更改生效; Spring 也只在关闭终端时才自动关闭。重启电脑
极少数情况重启终端仍不行,如新安装一个 gem 后不能正常运行安装命令($ bin/rails g gem:install),反复检查没发现其他问题,同时在网络搜索也没发现类似问题。重启 Heroku 服务器
Heroku 服务器在每次部署后自动重启,但 migrate 后可能不会立即重启,这时最好手动重启让更改立即生效;没有 migrate 访问网页只是出现 500 错误,不像在开发环境会明确提示需要 migrate。
调试信息
在终端检查错误日志时要把终端窗口显示到足够大,让日志内容以良好格式清晰显示,从而更容易从日志信息中发现错误原因。
在 Rails 日志显示信息
Rails.logger.info "---------- Start}"
Rails.logger.info {"Info #{@object.attributes.inspect}"}
Rails.logger.info "---------- End}"在网页上显示调试信息
<%= debug @object %>
<%= simple_format @object.to_yaml %>
<%= @object.inspect %>在网页上使用 console
<%= console %>, 或者使用 Better Errors
Rails Console
如果网页上不能正常创建、保存对象,可在 Rails Console 里测试是否有问题,或者使用 Pry
编辑文件
确认编辑的是目标文件,注意文件名是否正确、单复数、文件名后缀
- YML 文件里要用 ERB,而不能直接用 Ruby
- 默认所有文件后缀已经更改时,容易在 CSS 文件里使用 SCSS / coffee 文件里使用原生 JavaScript 而出现错误
- 调整样式时确认有选中目标元素、class 名正确,可添加红色边框确认;属性名及对应值正确,属性名之间可能混淆,也有可能错把另一个属性的值添加到目标属性上。
编辑器安装 linter 扩展,检查基本错误
一次只改动一个地方,确认有效无效后再作其他改动
搜索
如果遇到的问题不熟悉,那就要借助搜索引擎的力量。如果能直接找到解决方案可喜可贺,如果找到的信息和遇到的问题不完全相符、内容不完整、内容不是最新,那可以尝试:
查文档
很多时候查文档更直接有效搜索对应 gem/工具的 Github Issues
找到的问题更相关
最后 Rails Guides 是一个好地方: Debugging Rails Applications