调试 Ruby 程序错误可以从基础错误信息、打印调试、断点调试工具到日志与测试多个层面入手。下面按常见场景给你一套实用方法。
Ruby 报错信息一般包含:
NoMethodError、NameError)示例:
undefined method `foo' for nil:NilClass (NoMethodError)
from app.rb:10:in `bar'
from app.rb:20:in `<main>'
✅ 技巧:
nilputs / p / ppputs "调试:#{user.inspect}"
p user
require 'pp'
pp user
区别:
puts:字符串化p:调用 inspectpp:格式化输出(适合复杂结构)puts caller
或:
raise "调试位置"
byebug(最常用)安装:
gem install byebug
使用:
require 'byebug'
def foo
byebug
puts "hello"
end
运行程序后会停在断点,可使用:
n 下一步s 进入方法c 继续p 变量 查看变量binding.irb(Ruby 自带)def foo
binding.irb
end
进入交互式 Ruby 环境,直接执行代码。
✅ Ruby 2.4+ 推荐使用
# 在 controller / model 中
byebug
# 或
binding.pry # 需 pry-rails
nil 相关错误user.name
# NoMethodError: undefined method `name' for nil
✅ 检查:
puts user.inspect
NameError: undefined local variable or method `x'
✅ 检查:
requiredef foo(a, b); end
foo(1)
✅ 打印参数:
def foo(*args)
p args
end
require 'logger'
logger = Logger.new(STDOUT)
logger.info("user: #{user}")
Rails:
Rails.logger.debug(user.inspect)
rubocop 查代码问题ruby -w 开启警告ruby -w app.rb
如果你有具体的报错信息或代码片段,可以直接贴出来,我可以帮你精确定位问题。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。